Matlab 如何从单元格数组中删除重复的行对?
昨天我发了这个问题,但是帮我解决这个问题的朋友没有回复我,他写的那行有错误。 其他人能帮我吗;我自己试过,但没找到我想要的。 短暂地 我想删除重复的行,比如:{'A','B';'B','A';'C','D';'C','D'} 只保留这样一行:{'A','B','C','D'} 例如: “TPB”“TP53” “呃”“TP53” “SIT1”“GRB2” “ROHA”“BRCA1” “TP53”“厄尔” “ROHA”“BRCA1” 期望输出: “TPB”“TP53” “呃”“TP53” “SIT1”“GRB2” “ROHA”“BRCA1”Matlab 如何从单元格数组中删除重复的行对?,matlab,Matlab,昨天我发了这个问题,但是帮我解决这个问题的朋友没有回复我,他写的那行有错误。 其他人能帮我吗;我自己试过,但没找到我想要的。 短暂地 我想删除重复的行,比如:{'A','B';'B','A';'C','D';'C','D'} 只保留这样一行:{'A','B','C','D'} 例如: “TPB”“TP53” “呃”“TP53” “SIT1”“GRB2” “ROHA”“BRCA1” “TP53”“厄尔” “ROHA”“BRCA1” 期望输出: “TPB”“TP53” “呃”“TP53” “SIT1
您需要字符串的单元格数组的唯一行。您可以在单元格项上使用unique来获取数值矩阵,然后在矩阵上再次使用unique和参数“rows”来获取唯一的行:
% input cell
C = {'TPB' 'TP53';
'ELL' 'TP53';
'SIT1' 'GRB2';
'ROHA' 'BRCA1';
'TP53' 'ELL';
'ROHA' 'BRCA1'};
% get unique cell entries as a numeric array
[~, ~, num] = unique(C,'stable');
% sort columns to eliminate [a,b;b,a] situations
num = sort(reshape(num,size(C)),2);
% get unique rows indexes
[~,idx,~] = unique(num,'rows');
res = C(idx,:)
产出:
4×2 cell array
'TPB' 'TP53'
'ELL' 'TP53'
'SIT1' 'GRB2'
'ROHA' 'BRCA1'
Plz可能重复我尝试过的任何帮助,但没有结果!!!!@RTL,我说我已经发布了这个问题,但是那个写代码的人没有回答我,因为他的代码的第二部分有一个错误,如果它正确的话,我需要帮助修复它。谢谢你的回答,但是我得到了这个错误:索引超过了矩阵维度。PPIHumanet_数据第31行中的错误uniqueRows=rowsdoubleUnique;我正在使用一个巨大的输入单元,大小相同,如果可能的话,我可以与您共享。将其加载到一些文件共享系统google drive、dropbox等,并共享下载链接。我编辑了问题并共享了数据,非常感谢您的帮助!