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

3 views (last 30 days)
L'O.G. on 7 Dec 2022
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.

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'}

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 String Parsing in Help Center and File Exchange

R2021b

### Community Treasure Hunt

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

Start Hunting!