多次元の行列の最小値や最大値、またその位置を求めるにはどうすればよいですか?
154 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 30 de Mayo de 2018
Respondida: MathWorks Support Team
el 30 de Mayo de 2018
多次元の行列の最小値と位置(インデックス、要素番号)を求める方法を教えてください。minや max 関数では列または行の最小値のみ可能なようです。
Respuesta aceptada
MathWorks Support Team
el 30 de Mayo de 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 が最小となります。
0 comentarios
Más respuestas (0)
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!