Permute a vector by a specific ordering
    6 views (last 30 days)
  
       Show older comments
    
I have two vectors of the same length x and y, and each value in y corresponds to its value in x by the same index number, e.g.
x=[1 3 2 5 4]
y=[.2 .6 .5 .4 .3]
form the ordered pairs (1, 0.2), (3, 0.6), etc. Now I'd like to sort the vector x, but want to preserve the relationship of the two vectors. One thing I tried but didn't work is
[X I]=sort(x) 
Y=permute(y,I)  % how to permute y by ordering given by I?
This doesn't change the ordering of y at all. For this example the answer should be
X=[1 2 3 4 5]
Y=[.2 .5 .6 .3 .4]
Any ideas?
0 Comments
Accepted Answer
  Azzi Abdelmalek
      
      
 on 15 Jul 2014
        
      Edited: Azzi Abdelmalek
      
      
 on 15 Jul 2014
  
      x=[1 3 2 5 4]
y=[.2 .6 .5 .4 .3]
[X I]=sort(x)
Y=y(I)
0 Comments
More Answers (1)
  Ben11
      
 on 15 Jul 2014
        You're almost there!
Try this:
[a b] = sort(x)
y = y(b)
y =
      0.2000    0.5000    0.6000    0.3000    0.4000
0 Comments
See Also
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!

