M是矩阵:M = [X Y Z]其中X,Y和Z是列向量。
过滤M的最简单方法是: 1-每列不重复元素 2-行的顺序保留(如果一个元素在一列中出现两次,那么我想删除它第二次出现的整行)
e.g:
M = [1 2 4;
1 3 5;
2 3 9]
会变成
Mf = [1 2 4;
2 3 9]
我尝试使用[u,〜,ind] = unique(M,'rows')来重复列中一个元素的元素,但是这个函数处理整行(如果只有一个元素)重复行,然后行是唯一的)
答案 0 :(得分:2)
这是一个快速而肮脏的解决方案,只要你不是太大就应该没问题。我已经在几个矩阵上测试了它,它似乎按预期工作。
count=1;
for i=1:length(M(1,:))^2
[~,IA,~]=unique(M(:,count),'first');
if length(IA)~=length(M(:,1))
M=M(IA,:);
count=count-1;
end
count=count+1;
if count>length(M(:,1))
break
end
end
M