1

MATLAB の質問:

三次元の配列 A(2,2,2) があります。次のように、2x2 配列を A の部分配列として定義したいと思います。

B = A(1,:,:)。

つまり、最初のコンポーネントに投影しているだけです。しかし、matlab はこの 2x2 行列を代わりに 1x2x2 配列として扱うようになったため、特定のこと (別の 2x2 行列との乗算など) を行うことができなくなりました。

B を A の 2x2 サブ配列として取得するにはどうすればよいですか?

4

2 に答える 2

2

超高層ビルについて考えてみるとA(1,:,:)、1 階が取り除かれ、この操作は必然的に 3 次元にわたって行われます。

またはを使用して、シングルトン ディメンションを取り除くことができreshape()ます。squeeze()permute()

reshape(A(1,:,:),2,2)
squeeze(A(1,:,:))
permute(A(1,:,:),[2,3,1])

squeeze()ほとんどすべての仕事をそれ自体で行いますが、組み込み関数ではなく、実際には を使用しreshape()ます。他の 2 つの選択肢は、より高速であると予想されます。

于 2013-04-16T20:14:05.490 に答える
2

squeezeシングルトンの次元を削除する関数を使用したいでしょう:

B = squeeze(A(1,:,:))
于 2013-04-16T20:16:24.963 に答える