Matlab - 过滤掉相同的单元格条目

时间:2015-04-15 14:21:35

标签: string matlab compare

我的矩阵是10000 x 2。看起来像这样:

  安·贝斯

     

Bob Pete

     萨姆山姆

     

Jen Ted

     

...

两列中都有许多名称相同的行(如Sam)。我只需要不同名称的行。我想到了一个带有ismember / string比较的for循环但这很慢,并且有一些这样的矩阵。 其他选项也很慢,就是将第一列唯一并运行for循环,找到唯一值,并在每次find的值相同时删除。然而,这也很慢。请帮助优化。 感谢

1 个答案:

答案 0 :(得分:3)

您可以使用strcmp获取与相同行对应的索引的逻辑数组,即将第1列与第2列进行比较,并删除与索引为1对应的行。

Example:

C = {'Ann' 'Beth';

'Bob' 'Pete';

'Sam' 'Sam';

'Jen' 'Ted'};

idx = strcmp(C(:,1),C(:,2))

此处idx如下所示:

idx =

     0
     0
     1
     0

因此第3行包含相同的名称。现在删除那些:

C(idx,:) = [];

C = 

    'Ann'    'Beth'
    'Bob'    'Pete'
    'Jen'    'Ted'