如何在另一个细胞后对细胞进行排序?

时间:2018-05-08 13:17:38

标签: matlab

我有一个这样的单元格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的顺序相同。

2 个答案:

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