2

A = rand(2,2,2); と言います。[a,b,c] = find(A == A(1,2,2))

a=1 b=4 c=1 を得た

何?

4

4 に答える 4

5

これを試して:

[a,b,c] = ind2sub(size(A), find(A==A(1,2,2)))

ソース:検索ind2sub

于 2010-07-01T16:35:29.693 に答える
0

==代入演算子の代わりに等価を使用し=ます。

A = rand(2,2,2); [a,b,c] = find(A == A(1,2,2))

FINDのドキュメントを参照してください。出力引数はすべての方向ではなく、行と列のみです。MATLAB は 2 番目の方向に沿って 3 番目の方向を連結し、4 番目の列を返すようです。一致するものが 1 つしかないため、最後の引数は 1 です。

于 2010-07-01T16:28:10.623 に答える
0

FIND関数からの出力は、 2 組のインデックス (aおよびb) とそれらのインデックスの値 ( c) です。2 次元を超える行列の場合、2 番目のインデックスは線形インデックスになります。

あなたの例では、行うときに論理配列を作成しますA == A(1,2,2)。indexに1(つまり)の値を持つこの論理配列は、 FIND関数に渡されます。このゼロ以外の値の位置は、行列の最初の行 (出力) と、残りの次元内の 4 番目の線形インデックス (出力) にあります。のゼロ以外の値が出力されます。true(1,2,2)a = 1b = 41c

于 2010-07-01T16:32:27.327 に答える
0

Find は、2 次元配列に適用しようとしているときにのみ機能します。

n 次元配列を実行する Matlab Central で利用できる関数がいくつかあります。

于 2010-07-01T16:33:30.253 に答える