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

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

采纳的回答

MathWorks Support Team
例えば、多次元行列 "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 个)

类别

Help CenterFile Exchange 中查找有关 データ型 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!