How to label sorted variables
5 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!