2016-07-24 35 views
2

私はサイズ100 * 10 * 1344の3D MATLABマトリックスを持っています。3D MATLAB行列の最大要素の位置を見つける方法は?

マトリックスの最大要素の3つのインデックスを探したいと思います。

私は見つけるのコマンドでそれを見つけることを試みるとき、私が取得:

>> [i j k]=find(max(A(:))==A) 
i = 
    52 
j = 
    9601 
k = 
    1 

しかし、これらの指標を使用すると、次の結果得られます。

問題を解決する方法
>> A(i ,j, k) 
??? Index exceeds matrix dimensions. 

を??

答えて

6

findは3つのインデックスを返すことはできません。2つだけです。 3番目の出力はインデックスではなく値です。

私はあなたがlinear indexになる単一のインデックスを得ることをお勧めします。これを直接Aに使用するか、ind2subで3つのインデックスに変換することができます。

例:

:あなたのみ(場合2つ以上が存在する)、最大の最初の発生を必要とする場合

A = rand(3,4,5); % example 2D array 
ind = find(max(A(:))==A(:)); 
A(ind) % use linear index directly into A 
[ii, jj, kk] = ind2sub(size(A), ind); % or convert to three indices... 
A(ii, jj, kk) % ...and use them into A 

また、かわりfindmaxの第二の出力を使用することができ

A = rand(3,4,5); % example 2D array 
[~, ind] = max(A(:)); % second output of this function gives position of maximum 
A(ind) % use linear index directly into A 
[ii, jj, kk] = ind2sub(size(A), ind); % or convert to three indices... 
A(ii, jj, kk) % ...and use them into A 
+1

ありがとうございました! –

関連する問題