如何在Matlab中删除不重复的行?

时间:2012-10-26 04:15:56

标签: matlab delete-row

我有一个矩阵,其中有一列如下:

NNN

NNN

NNN

AAA

AAA

CCC

CCC

DDD

DDD

DDD

我想删除所有没有重复3次的行。这将导致删除第4,5,6,7行(结果将只是具有剩余的矩阵:

NNN

NNN

NNN

DDD

DDD

DDD

(PS:那些是字符串,而不是数字)。

使用matlab有没有一种智能的方法呢?我的意思是,使用功能等?因为我用for解决了这个问题,但我认为这不是最好的方法,它必须有另一种方式。

提前感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

这应该这样做:

t=tabulate(x) % count how much each element appears
valid=t(cell2mat(t(:,2))>=3,1) % find strings that appear at least 3 times 
result=x(ismember(x,valid)) % select only these strings

我在这里假设x是具有一列字符串的单元矩阵。如果x有其他列,则很容易解决。