我在Matlab中有一个大小为10000 X 3的单元矩阵,我想删除第一列中具有相同值的行。
也就是说,如果第i列和第j行在第一列中具有相同的值,我想删除这两行。
我还应该说第一列中可以有两个以上具有相同值的行,在这种情况下,我想删除所有这些行。
我该怎么做?
谢谢!
答案 0 :(得分:2)
您可以使用函数histc
,unique
和逻辑索引来实现您的目标。这是一个小例子。
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
将其转换为矩阵。