Ordering vectors of numbers of type double and strings according to another vector

1 view (last 30 days)
How do I order the following arrays?
vector_1 = [1 3 7 8 9 10];
string_1 = {'apples' 'pears' 'plums' 'oranges' 'peaches' 'grapes'};
Specifically, I want to re-order them according to [3 1 7 9 8 10] for vector_1.

Accepted Answer

Voss
Voss on 7 Dec 2022
vector_1 = [1 3 7 8 9 10];
string_1 = {'apples' 'pears' 'plums' 'oranges' 'peaches' 'grapes'};
vector_1_reordered = [3 1 7 9 8 10];
[~,idx] = ismember(vector_1_reordered,vector_1);
string_1_reordered = string_1(idx)
string_1_reordered = 1×6 cell array
{'pears'} {'apples'} {'plums'} {'peaches'} {'oranges'} {'grapes'}

More Answers (1)

Eric Delgado
Eric Delgado on 7 Dec 2022
You could write a simple loop...
string_1 = {'apples' 'pears' 'plums' 'oranges' 'peaches' 'grapes'};
vector_1 = [1 3 7 8 9 10];
vector_2 = [3 1 7 9 8 10];
idx = [];
for ii = 1:numel(vector_1)
idx(ii) = find(vector_1 == vector_2(ii), 1);
end
string_2 = string_1(idx)
string_2 = 1×6 cell array
{'pears'} {'apples'} {'plums'} {'peaches'} {'oranges'} {'grapes'}

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!