Sorting a cell array of string, based on the order of another

9 views (last 30 days)
I have 2 cell array of string. The content of the cells is exactly the same, only the order is different.
I want to sort one, without changing the order of the other.

Accepted Answer

Walter Roberson
Walter Roberson on 23 Feb 2011
[tf, idx] = ismember(B,A);
Places where tf are false are places where B is not in A. And of course, B might not cover all of A. If you know that B covers exactly A, then B(idx) should be the same as A

More Answers (3)

Sébastien
Sébastien on 23 Feb 2011
ismember() is exactly what I needed. Thank you very much!

Walter Roberson
Walter Roberson on 22 Feb 2011
Your title and your description do not agree. Your description has a trivial answer ("just don't use the second variable") so I will answer based on your title;
[sortedvals, sortidx] = sort(FirstCell);
newCell = SecondCell(sortidx);

Sébastien
Sébastien on 23 Feb 2011
No they agree, I've not been clear. I've :
Vector A {'pierre'} {'paul'} {'jacques'}
Vector B {'jacques'} {'pierre'} {'paul'}
I want to get the index on how to reorder B to fit the order of A.
A first solution would be to sort both alphabetically, I could do that, but here the point is that I don't want to reorder A.

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!