How to label sorted variables
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Arif Widianto
 am 5 Jul. 2020
  
    
    
    
    
    Bearbeitet: Matt J
      
      
 am 6 Jul. 2020
            Hi,
Let say I have a matrix obtained from sort function,
x = [1,1,3;
     2,2,1;
     3,3,2]
with 1, 2, and 3 represent sorted values of certain variables in vertical manner alongside each column. I want to have another variable that stores the label of corresponding order.
% (e.g. It will be like this)
y = [A,A,B]
How can I do this if I have 7 variables that I want to sort in a 7-by-m matrix?
Thank you.
1 Kommentar
  dpb
      
      
 am 5 Jul. 2020
				Save the optional second index array variable and use it to reference the label array.
Akzeptierte Antwort
  Matt J
      
      
 am 5 Jul. 2020
        Maybe what you want:
>> labels=string({"A","B","C"});
>> x = [1,1,3;
     2,2,1;
     3,3,2];
>> labels(x)
ans = 
  3×3 string array
    "A"    "A"    "C"
    "B"    "B"    "A"
    "C"    "C"    "B"
6 Kommentare
  dpb
      
      
 am 6 Jul. 2020
				You'll have to save the perms(1:7) array and find the location of each column in it as the index/label, then.
A string match will probably be faster than all(ismember()) or the like.
  Matt J
      
      
 am 6 Jul. 2020
				
      Bearbeitet: Matt J
      
      
 am 6 Jul. 2020
  
			One thing you could do is create a label look-up table LUT, maintained a s a cell array
LUT=cell(1,2.^7);
vals=perms(1:7)*2.^(0:6).';
LUT(vals)=labels;
and now for a 7x3000 data set
[~,x]=sort(rand(7,3000)); %fake data
you would simply do
y=LUT(2.^(0:6) * x); %perform the label look-up
Weitere Antworten (0)
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!