How to retrieve index in a matrix
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Suppose a matrix A= [20 100 35 50
                                       30  30   25 40
                                       40   5    45 15
                                       50   4    20 20]
After [B,I]=sort (A,’ascend’), I get the index matrix 
I= [ 1 4 4 1
       2 3 2 3
       3 2 1 4
       4 1 3 2 ]
Now I want to make a  matrix C which have only one index (corrsponds to minima) of each column I which is non repeating
C=[ 1 4 2 3] . The selection of these index will give column wise minima with no repeatation. How to make matrix C?
2 Commenti
  Jonas
      
 il 28 Giu 2022
				i do not fully understand, if you want the index of ea column of minimum element, you can use [~,idx]=min(A), but it gives [1 4 4 3]
Risposta accettata
  Voss
      
      
 il 28 Giu 2022
        
      Modificato: Voss
      
      
 il 28 Giu 2022
  
      One way is to find the index of the minimum in each column of A one at a time, setting that row of A to NaN each time so that that index will not be found again for subsequent columns.
A= [20 100 35 50
    30  30 25 40
    40   5 45 15
    50   4 20 20];
C = zeros(1,size(A,2))
A_temp = A
for ii = 1:size(A_temp,2)
    % output displayed in command window
    % so you can see the process
    [~,C(ii)] = min(A_temp(:,ii))
    A_temp(C(ii),:) = NaN
end
C
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Matrix Indexing 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!