例如,我有一个矩阵
A = [21 3 14;0 1 5;8 2 4]
并想要一个新矩阵
B =[9 4 8;1 2 6;7 3 5]
我找到了一种创建矢量的方法
http://blogs.mathworks.com/loren/2007/08/21/reversal-of-a-sort/#7
但是矩阵有函数吗?
谢谢
例如,我有一个矩阵
A = [21 3 14;0 1 5;8 2 4]
并想要一个新矩阵
B =[9 4 8;1 2 6;7 3 5]
我找到了一种创建矢量的方法
http://blogs.mathworks.com/loren/2007/08/21/reversal-of-a-sort/#7
但是矩阵有函数吗?
谢谢
类似于 abhineetprasad 的解决方案,但您不需要键值结构。
您可以对矩阵使用几乎与向量相同的方法。您只需要确定 A 相对于矢量形状版本的排序索引,A(:)
并将 B 初始化为与 A 相同的维度。然后您可以使用矩阵 B 的线性索引来填充它的等级:
% prepare matrix B with the same dimensions as A
B = zeros(size(A));
% determine sort indices of the matrix entries treated as a vector
[~, ind] = sort(A(:));
% use linear indexing by sort indices to fill vector B with ranks
B(ind) = 1 : numel(B);
一种可能的方法是: