MATLAB の質問:
三次元の配列 A(2,2,2) があります。次のように、2x2 配列を A の部分配列として定義したいと思います。
B = A(1,:,:)。
つまり、最初のコンポーネントに投影しているだけです。しかし、matlab はこの 2x2 行列を代わりに 1x2x2 配列として扱うようになったため、特定のこと (別の 2x2 行列との乗算など) を行うことができなくなりました。
B を A の 2x2 サブ配列として取得するにはどうすればよいですか?
MATLAB の質問:
三次元の配列 A(2,2,2) があります。次のように、2x2 配列を A の部分配列として定義したいと思います。
B = A(1,:,:)。
つまり、最初のコンポーネントに投影しているだけです。しかし、matlab はこの 2x2 行列を代わりに 1x2x2 配列として扱うようになったため、特定のこと (別の 2x2 行列との乗算など) を行うことができなくなりました。
B を A の 2x2 サブ配列として取得するにはどうすればよいですか?
超高層ビルについて考えてみるとA(1,:,:)
、1 階が取り除かれ、この操作は必然的に 3 次元にわたって行われます。
またはを使用して、シングルトン ディメンションを取り除くことができreshape()
ます。squeeze()
permute()
reshape(A(1,:,:),2,2)
squeeze(A(1,:,:))
permute(A(1,:,:),[2,3,1])
squeeze()
ほとんどすべての仕事をそれ自体で行いますが、組み込み関数ではなく、実際には を使用しreshape()
ます。他の 2 つの選択肢は、より高速であると予想されます。
squeeze
シングルトンの次元を削除する関数を使用したいでしょう:
B = squeeze(A(1,:,:))