我的矩阵是10000 x 2。看起来像这样:
安·贝斯Bob Pete
萨姆山姆Jen Ted
...
两列中都有许多名称相同的行(如Sam)。我只需要不同名称的行。我想到了一个带有ismember / string比较的for循环但这很慢,并且有一些这样的矩阵。 其他选项也很慢,就是将第一列唯一并运行for循环,找到唯一值,并在每次find的值相同时删除。然而,这也很慢。请帮助优化。 感谢
答案 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'