我有一个矩阵,例如
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
但矩阵有功能吗?
由于
答案 0 :(得分:2)
与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);
答案 1 :(得分:0)
这样做的可能方法是: