我有一个这样的单元格A:
number=[1 3 2 4];
name={'dog' 'cat' 'fish' 'monkey'};
age=[7 9 2 13];
A=[];
for i=1:4
A(i).number=number(i);
A(i).name=name{i};
A(i).age=age(i);
end
Cell B是:
B={'cat' 'fish' 'monkey' 'dog'}
现在我希望单元格A已排序,因此A.name与B的顺序相同。
答案 0 :(得分:2)
您可以使用ismember
的第二个输出:
[~, ind] = ismember(B, {A.name});
A_sorted = A(ind);
答案 1 :(得分:1)
您可以使用intersect
获取常用元素的索引:
number=[1 3 2 4];
name={'dog' 'cat' 'fish' 'monkey'};
age=[7 9 2 13];
A=[];
for i=1:4
A(i).number=number(i);
A(i).name=name{i};
A(i).age=age(i);
end
B={'cat' 'fish' 'monkey' 'dog'};
[~, ~, idx] = intersect(B, {A(:).name}, 'stable');
A = A(idx);
返回:
{A.name}
ans =
1×4 cell array
{'cat'} {'fish'} {'monkey'} {'dog'}