多次元の行列の最小値​や最大値、またその位​置を求めるにはどうす​ればよいですか?

249 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team
MathWorks Support Team il 30 Mag 2018
多次元の行列の最小値と位置(インデックス、要素番号)を求める方法を教えてください。minや max 関数では列または行の最小値のみ可能なようです。

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 30 Mag 2018
例えば、多次元行列 "z" 全域から最小値を求めるためには、以下のように、コロン演算子を使って、入力する多次元配列をベクトル化します。
[C, I] = min(z(:))
これにより、min や max 関数で最小値、最大値を求めることができます。
この結果、インデックス I も 1 列データの何番目、となりますが、ind2sub 関数を使用して、元の (2次元の) z 行列のどの位置かを求めることができます。
>> z = rand(10)
z =
Columns 1 through 7
0.4173 0.7803 0.2348 0.5470 0.9294 0.6443 0.2077
0.0497 0.3897 0.3532 0.2963 0.7757 0.3786 0.3012
0.9027 0.2417 0.8212 0.7447 0.4868 0.8116 0.4709
0.9448 0.4039 0.0154 0.1890 0.4359 0.5328 0.2305
0.4909 0.0965 0.0430 0.6868 0.4468 0.3507 0.8443
0.4893 0.1320 0.1690 0.1835 0.3063 0.9390 0.1948
0.3377 0.9421 0.6491 0.3685 0.5085 0.8759 0.2259
0.9001 0.9561 0.7317 0.6256 0.5108 0.5502 0.1707
0.3692 0.5752 0.6477 0.7802 0.8176 0.6225 0.2277
0.1112 0.0598 0.4509 0.0811 0.7948 0.5870 0.4357
Columns 8 through 10
0.3111 0.5949 0.0855
0.9234 0.2622 0.2625
0.4302 0.6028 0.8010
0.1848 0.7112 0.0292
0.9049 0.2217 0.9289
0.9797 0.1174 0.7303
0.4389 0.2967 0.4886
0.1111 0.3188 0.5785
0.2581 0.4242 0.2373
0.4087 0.5079 0.4588
>> [C, I] = min(z(:))
C =
0.0154
I =
24
>> [ii, jj] = ind2sub(size(z), I)
ii =
4
jj =
3
4 行 3 列の 0.0154 が最小となります。

Più risposte (0)

Categorie

Scopri di più su データ型 in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!