我有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