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

1 visualizzazione (ultimi 30 giorni)
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.

Risposta accettata

Voss
Voss il 7 Dic 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'}

Più risposte (1)

Eric Delgado
Eric Delgado il 7 Dic 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'}

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by