how to sort values depending on other vector?
Show older comments
if true
% code
x=[0,50,150,100,50,150,0,100,150,0,50,150]
y=[1,2,3,3,2,1,1,2,3,3,2,1]
i want to sort y as 0 to 1, 1 to 2 and 2 to 3
for x 0 to 50 and 50 to 100
Answers (1)
Steven Lord
on 23 Oct 2018
If I understand what you've described correctly, you want to sort y and break ties among elements in y that have the same value based on the corresponding elements of x. Is that right? If so, you can pack the two vectors into a matrix and use sortrows to sort first by the column corresponding to y then by the column corresponding to x. In my sample code below, the y column is column 2 and the x column is column 1 so I sortrows using [2 1].
x = [0,50,150,100,50,150,0,100,150,0,50,150]
y = [1,2,3,3,2,1,1,2,3,3,2,1]
M = [x.', y.']
M2 = sortrows(M, [2 1])
If you need to know which row in M went to which row in M2 (or equivalently which elements in x and y went where in M2) call sortrows with two outputs.
5 Comments
Shubham Mohan Tatpalliwar
on 23 Oct 2018
Steven Lord
on 23 Oct 2018
What is your ultimate goal here? Can you describe your overall application?
Are you trying to count how many elements in Achsemoment fall into each bin? If so use histcounts.
Are you trying to identify into which bin each element falls? That's the third output from histcounts or the first output from discretize.
Shubham Mohan Tatpalliwar
on 23 Oct 2018
Steven Lord
on 23 Oct 2018
how should i code to create 42 vectors?
How are you planning to use that data? I suspect your ultimate goal is not "to sort the values and count it" -- unless this is part of a homework assignment, I expect you want to do something with the sorted data and/or the counts. What is that something?
Shubham Mohan Tatpalliwar
on 23 Oct 2018
Edited: Shubham Mohan Tatpalliwar
on 23 Oct 2018
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!