Sort variables form lowest to largest but by keeping their name

13 visualizaciones (últimos 30 días)
Matteo Babin
Matteo Babin el 9 de Mayo de 2020
Comentada: dpb el 10 de Mayo de 2020
Hi,
I'm looking for a way to sort some variables from the smallest value to the largest, but I would like to have the variable's names instead of their value as the output. For example:
a = 5; b = 10; c = 6;
Ans = sort( [ a b c ] )
In this case the Command Window will show me " Ans = 5 6 10" but I would like it to show " Ans = a c b"
How can I do that without using a "if" to sort them by name afterwards, which could become very long in the case of many variables?
Thanks for your answer!

Respuestas (2)

dpb
dpb el 9 de Mayo de 2020
Per usual, the way in MATLABB is to not used explicitly named variables -- use an array and if you need some auxiliary name/id to go with them, carry that along as a corollary variable.
data=[5 10 6];
names=cellstr(['a':'c'].');
[~,ix]=sort(data);
>> names(ix)
ans =
3×1 cell array
{'a'}
{'c'}
{'b'}
>>

Stephen23
Stephen23 el 9 de Mayo de 2020
Using separate variables is an approach that will force you into writing slow, inefficient, complex code. A much better use of MATLAB would be to use arrays to store your data, which is exactly what MATLAB was designed for.
A table makes your task very simple:
>> names = {'a';'b';'c';};
>> values = [ 5; 10; 6];
>> T = table(names,values)
T =
names values
_____ ______
'a' 5
'b' 10
'c' 6
>> T = sortrows(T,'values')
T =
names values
_____ ______
'a' 5
'c' 6
'b' 10

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by