配列のランキング

以下の配列Aについて考える.確認しやすいように値を設定した.

A = [0.4, 0.6, 0.2, 0.3, 0.5, 0.1];

それぞれが全体の中で昇順で何番目になるかを求めたい.つまり,

X = [  4,   6,   2,   3,   5,   1]

という配列をつくりたい.
sortの2つめの引数は,

>> [B,I] = sort(A,'ascend')
I = [6 3 4 1 5 2]

のように,昇順で並べ替えるためのインデックス,B = A(I)となるようなIが返される.
このIをさらにsortをかければ,希望の配列が得られる.

>> [~,X] = sort(I,'ascend')
X = [4 6 2 3 5 1]

sortの部分をascend(デフォルト)ではなくてdescendにすれば,降順になり値の高いものからナンバリングされた配列が作成される.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2017-11-29 (Wed) 02:31:59 (418d)