0

我们有一个矩阵:

Index:    1 2 3 4 5 6 

Elements:
          0 2 0 5 9 8 
          1 0 5 0 5 4
          0 1 0 0 6 0 

是否可以按每列不同元素的大小进行排序?结果应该是这样的:

  Index:     5 2 6 1 3 4 

  Elements:
             9 2 8 0 0 5 
             5 0 4 1 5 0
             6 1 0 0 0 0 

先感谢您。

4

1 回答 1

4

使用“length”和“unique”函数,您可以检索每列的不同值的数量(包括零),例如:

for n=1:size(a,2)
  b(n)=length(unique(a(:,n)));
end

如果你想忽略零,你可以使用

b(n)=sum(unique(a(:,n)) ~= 0);

它给出了一个数组,其中包含每列的不同元素的数量:

b =    1     2     1     1     3     2

然后您可以对该数组进行排序并使用有序索引对矩阵进行排序:

[~, index]=sort(b, 'descend');
result = a(:, index)
于 2012-12-01T20:02:27.613 回答