0

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

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

例如:

M = [1 2 4; 
1 3 5;
2 3 9]

会成为

Mf = [1 2 4;
2 3 9]

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

4

1 回答 1

2

这是一个快速而肮脏的解决方案,只要你的 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
于 2013-11-01T03:20:54.000 回答