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

Matlab - filter out identical cell entries

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

Ann Beth

Bob Pete

Sam Sam

Jen Ted

...

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

您可以使用 strcmp 获取对应于相同行的索引的逻辑数组,即将第一列与第二列进行比较并删除对应于索引 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'