Sorting a string according to the values of a vector of type double

2 Ansichten (letzte 30 Tage)
I have a vector A with numbers of type double. Two of the values of A are the same, e.g.,
A = [1.1 2.3 4.4 2.3 5.1];
I also have a corresponding string, e.g.,
vegetables = {'carrots' 'lettuce' 'cabbage' 'parsley' 'tomatoes'};
I want to order A in increasing values and re-arrange the string accordingly. If a value appears more than once, as is the case here, how do I make sure it's still counted? So here in this simple example I should end up with:
A = [1.1 2.3 2.3 4.4 5.1];
vegatables={'carrots' 'lettuce' 'parsley' 'cabbage' 'tomatoes'};
I tried to do this by
[~,idx] = ismember(sort(A),A);
vegatables_ordered = vegetables(idx);
A_ordered = sort(A);
But that doesn't get the string right. How do I do this? There won't be duplicate values in all cases, but I want to account for this possibility shown here.

Akzeptierte Antwort

Les Beckham
Les Beckham am 9 Dez. 2022
It should be as simple as this unless I misunderstand what you are expecting.
A = [1.1 2.3 4.4 2.3 5.1];
vegetables = {'carrots' 'lettuce' 'parsley' 'cabbage' 'tomatoes'};
[As,idx] = sort(A)
As = 1×5
1.1000 2.3000 2.3000 4.4000 5.1000
idx = 1×5
1 2 4 3 5
vegetables(idx)
ans = 1×5 cell array
{'carrots'} {'lettuce'} {'cabbage'} {'parsley'} {'tomatoes'}

Weitere Antworten (1)

Steven Lord
Steven Lord am 9 Dez. 2022
Take a look at the second output from the sort function.

Kategorien

Mehr zu Numeric Types finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by