【问题标题】:Matlab - filter out identical cell entriesMatlab - 过滤掉相同的单元格条目
【发布时间】:2015-04-15 22:37:38
【问题描述】:
我的矩阵是一个 10000 x 2 的矩阵。看起来像这样:
安贝丝
鲍勃·皮特
山姆
詹特德
...
两列中有许多具有相同名称的行(如 Sam)。我只需要具有不同名称的行。我想到了一个带有 ismember/string 比较的 for 循环,但这非常慢,并且有一些这样的矩阵。
另一个也很慢的选项是唯一的第一列并运行一个 for 循环以查找唯一值并在每次 find 的值相同时删除。但是,这也很慢。请帮忙优化。
谢谢
【问题讨论】:
标签:
string
matlab
compare
【解决方案1】:
您可以使用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'