0

例如,我有一个矩阵

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

但是矩阵有函数吗?

谢谢

4

2 回答 2

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);
于 2013-09-29T21:02:55.757 回答
0

一种可能的方法是:

  1. 将矩阵读入向量。
  2. 使用您找到的链接对向量进行排序。
  3. 将向量存储为 Map,向量值作为“键”,向量索引作为值。
  4. 当您再次使用地图读取第一个矩阵时,通过查找数字的索引来填充新矩阵。
于 2013-09-29T18:42:01.140 回答