我们有一个矩阵:
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
提前谢谢。
答案 0 :(得分:4)
使用“长度”和“唯一”功能,您可以检索每列的不同值的数量(包括零),例如:
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)