A = rand(3, 4, 5);3次元配列があり、ベクトルを抽出したいとしましょうA(1,1,:)。このように書くと、出力は size[1 1 5]の単純なベクトルではなく、 size の 3D 配列になります[1 5]。これにより、たとえば、別のサブ配列に割り当てることができなくなりますB(1,:)(「添字付きの割り当て次元の不一致」が発生します)。元の寸法を維持せずにベクトルを抽出する最良の方法は何ですか?
私は2つのアプローチを考えることができます:
下付き文字を使用する代わりに、目的の要素の線形インデックスを計算します。
targetInds = 1:5; fixedInds = repmat(1,size(targetInds)); inds = sub2ind(size(A), fixedInds, fixedInds, targetInds); size(A(inds)) ans = 1 5使用
reshape:subA = reshape(A(1,1,:),1,size(A,3)); size(subA) ans = 1 5
2 番目の方法は簡単に思えますが、効率が悪いと思います。どちらも追加のコードが必要です。もっと簡単な方法はありますか?