通过唯一列元素过滤矩阵

时间:2013-11-01 02:54:24

标签: matlab filter

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')来重复列中一个元素的元素,但是这个函数处理整行(如果只有一个元素)重复行,然后行是唯一的)

1 个答案:

答案 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