在matlab中删除具有相同第一列值的行

时间:2011-05-24 20:50:01

标签: matlab

我在Matlab中有一个大小为10000 X 3的单元矩阵,我想删除第一列中具有相同值的行。

也就是说,如果第i列和第j行在第一列中具有相同的值,我想删除这两行。

我还应该说第一列中可以有两个以上具有相同值的行,在这种情况下,我想删除所有这些行。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用函数histcunique和逻辑索引来实现您的目标。这是一个小例子。

a=randi(10,5,3)         %#generate a sample random matrix

a =

     5     3     5
     5     7    10
     7     7     4
     8     2     6
     8     2     3

[uniqVals,uniqIndx]=unique(a(:,1));  %# get unique values and corresponding indices of the first column of a
count=histc(a(:,1),uniqVals); %# get the bin counts of the elements (i.e., find which are repeated)

b=a(uniqIndx(count==1),:)

b =

     7     7     4

仅选择具有非重复元素的行。既然你说你有一个单元矩阵,那么在执行此操作之前,只需使用cell2mat将其转换为矩阵。