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 に答える