Order columns of matrix based on other matrix
    2 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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 Commenti
Risposta accettata
  David Hill
      
      
 il 28 Gen 2021
        Result=B(A+[0:3:12]);
2 Commenti
  Adam Danz
    
      
 il 28 Gen 2021
				Nice idea. To make it work for all matrix sizes, 
Result=B(A+[0:size(A,1):numel(A(:,1:end-1))]);
Vedere anche
Categorie
				Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


