Order columns of matrix based on other matrix
    2 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
So in one matrix A I have the order of the elements
A =  3     1     3     1    3
     2     2     2     2    1   
     1     3     1     3    2  
and in the other matrix B are the actual values
B =  1     5     5     1    7
     2     6     7     2    4  
     4     8     8     6    5   
How can I use the columns of A to order the columns of B?
Result = 4     5     8     1    5
         2     6     7     2    7  
         1     8     5     6    4
So e.g. for the 5th column: 5 becomes the first value, 7 the first and 4 the third.
result(1,5) = B(A(1,5), 5); % A(1,5) = 3
result(2,5) = B(A(2,5), 5); % A(2,5) = 1
result(3,5) = B(A(3,5), 5); % A(3,5) = 2
Can I do this without using a loop?
0 Kommentare
Akzeptierte Antwort
  David Hill
      
      
 am 28 Jan. 2021
        Result=B(A+[0:3:12]);
2 Kommentare
  Adam Danz
    
      
 am 28 Jan. 2021
				Nice idea. To make it work for all matrix sizes, 
Result=B(A+[0:size(A,1):numel(A(:,1:end-1))]);
Siehe auch
Kategorien
				Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


