使用其他矩阵MATLAB的元素列创建新矩阵

时间:2013-09-29 18:28:59

标签: matlab sorting matrix ranking

我有一个矩阵,例如

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

但矩阵有功能吗?

由于

2 个答案:

答案 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)

这样做的可能方法是:

  1. 将矩阵读入矢量。
  2. 使用您找到的链接对矢量进行排序。
  3. 将矢量存储为Map,矢量值为“key”,矢量索引为值。
  4. 使用地图再次读取第一个矩阵时,通过查找数字的索引来填充新矩阵。