Matlab 按唯一列元素筛选矩阵

Matlab 按唯一列元素筛选矩阵,matlab,filter,Matlab,Filter,M是一个矩阵:M=[X Y Z],其中X、Y和Z是列向量 过滤M的最简单方法是什么,以便: 1-每列不重复任何元素 2-行的顺序保持不变(如果一个元素在列中出现两次,那么我想删除第二次出现的整行) e、 g: 将成为 Mf = [1 2 4; 2 3 9] 我尝试使用[u,~,ind]=unique(M,'rows')来获得列中一个元素重复的元素,但是这个函数处理整行(如果行中只有一个元素重复,那么该行是唯一的)这是一个快速而肮脏的解决方案,只要M不是太大就可以了。我已经在一些矩阵上测试了它,

M是一个矩阵:M=[X Y Z],其中X、Y和Z是列向量

过滤M的最简单方法是什么,以便: 1-每列不重复任何元素 2-行的顺序保持不变(如果一个元素在列中出现两次,那么我想删除第二次出现的整行)

e、 g:

将成为

Mf = [1 2 4;
2 3 9]

我尝试使用[u,~,ind]=unique(M,'rows')来获得列中一个元素重复的元素,但是这个函数处理整行(如果行中只有一个元素重复,那么该行是唯一的)

这是一个快速而肮脏的解决方案,只要M不是太大就可以了。我已经在一些矩阵上测试了它,它似乎按预期工作

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

+但是出于好奇,因为anwser已经被接受了。对于
M=[1 2 4;1 3 5;2 3 4]
它给出
M=[1 2 4;2 3 4]
。4在结尾重复。是吗?@Marcin是的,你是对的,我的代码有严重问题!我想我现在已经修好了,但它不是很好。我相信有更好的方法来做这件事。
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