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

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

Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 30 Mai 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 が最小となります。

Weitere Antworten (0)

Kategorien

Mehr zu データ型 finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!