Matlab:对字符串的 2 个单元格矩阵进行排序
Matlab: Sort 2 cell matrices of strings
我有 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);
所以我会在其他 2 个 Cell 矩阵中获取匹配元素及其列。现在我可以在 Secondmatches 元胞数组中搜索 Firstmatches 的每个名称元素,但我想知道是否有更好的方法?
我也不知道如何将列添加到正确的位置。
也许有更简单的方法来做到这一点?我希望清楚我想要实现的目标!
您可以按照以下方式进行:
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
我有 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);
所以我会在其他 2 个 Cell 矩阵中获取匹配元素及其列。现在我可以在 Secondmatches 元胞数组中搜索 Firstmatches 的每个名称元素,但我想知道是否有更好的方法? 我也不知道如何将列添加到正确的位置。
也许有更简单的方法来做到这一点?我希望清楚我想要实现的目标!
您可以按照以下方式进行:
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