如何从单元格数组中删除相同的行和重复的行?

时间:2017-05-19 16:49:55

标签: matlab

我有一个单元格数组如下:

  • 'FEM''FEM'
  • 'TPB''TP53'
  • 'ELL''TP53'
  • 'SIT1''GRB2'
  • 'TP53''ELL'

    我希望输出如下:

  • 'TPB''TP53'

  • 'SIT1''GRB2'

有人可以帮我这么做吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试此功能:

function output = return_desired_output()
% This function returns what I want.

output = {'TPB','TP53';'SIT1' 'GRB2'}

希望它有所帮助...

答案 1 :(得分:1)

不确定你的结构所以我认为它是

{'A','B';...
 'C','D';...
 'E','F'};

删除所有重复的项目

例如:{'A','A'}

dupe = zeros(size(A,1),1); 
for row = 1:size(A,1)
  dupe(row) = strcmp(A{row,1},A{row,2});
end

A_noDupes = A(~dupe,:);

删除所有重复的行

Ex:{'A','B'},{'B','A'},{'B','B'},{'A','A'}的任意组合,将导致所有被删除

注意:这也会删除一些但不是所有的欺骗行为(即如果你有{'E','E'}和{'E','A'},{' E','E'}将被删除)

A = A_noDupes;

for row = 1:size(A,1)
   temp = ismember(A,A(row,:))                  
   repeat(row,1) = length(find(temp(:,1) & temp(:,2))) <= 1
end

A_final = A(~repeat,:);