MATLAB Answers

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

308 ビュー (過去 30 日間)
多次元の行列の最小値と位置(インデックス、要素番号)を求める方法を教えてください。minや max 関数では列または行の最小値のみ可能なようです。

採用された回答

MathWorks Support Team
MathWorks Support Team 2018 年 5 月 30 日
例えば、多次元行列 "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 が最小となります。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!