MATLAB:排序2个细胞矩阵



我有2个单元的单元格矩阵,我想比较并分类一个字符串。例如:

Data1={'hello','daddy','mama';'0','55','60';'asd','','dwadsdwa'};
Data2={'cat','daddy','dog','cat','mama','daddy';'21','54','79','1','0','231';'sa','wda','thjd','gf','wda','sda'};

我想比较矩阵的第一行,并与匹配元素及其列创建一个新的结果矩阵。喜欢:

matches={'daddy','daddy','daddy','mama','mama';'55','54','231','60','0';'','wda','sda','dwadsdwa','wda'};

我尝试了:

Da1Index=find(ismember(Data1(1,:),Data2(1,:)));
Firstmatches=Data1(:,Da1Index);
Da2Index=find(ismember(Data2(1,:),Data1(1,:)));
Secondmatches=Data2(:,Da2Index);

因此,我将在其他两个单元格矩阵中获取匹配元素及其列。现在,我可以在第二型单元格数组中搜索第一个匹配的每个名称元素,但是我想知道有更好的方法吗?我也不知道如何将列添加到正确的位置。

也许有一种更简单的方法可以做到这一点?我希望我想实现什么!

您可以按以下方式进行:

i1 = ismember(Data1(1,:), Data2(1,:));  %// columns of Data1 to keep
i2 = ismember(Data2(1,:), Data1(1,:));  %// columns of Data1 to keep
matches = [Data1(:,i1) Data2(:,i2)];    %// build result
matches = sortrows(matches.').';        %// sort if needed. Note: lexicographical order

最新更新