1

行列の一部を選択して、単一の次元を切り取るにはどうすればよいですか?

例: B = zeros(100,100,3,'double');

B(2,3,:) を選択すると1x1x3、結果として行列が得られます。一部の操作 (ノルムなど) では結果としてベクトルが必要なため、これは期待される結果ではありません。この問題を処理するために を使用squeezeしましたが、特に頻繁に使用する場合、この操作は非常に時間がかかるようです。

ベクトルのみを選択し、単一の次元を「カット」するにはどうすればよいですか?

4

2 に答える 2

3

あなたの場合、次のようにコロン演算子を使用できます。

x = B(2,3,:);
x = x(:);

これは、X のすべての要素を要素数 x 1 ベクトルに配置します。

于 2012-06-23T14:50:34.783 に答える
0

次元を並べ替えて、シングルトンでないものを前面に出すこともできます。また:

>> permute(B(2,3,:),[3 1 2])
ans =
      0.97059
      0.69483
       0.2551

また

>> permute(B(2,3,:),[1 3 2])
ans =
      0.97059      0.69483       0.2551

行ベクトルと列ベクトルのどちらが必要かによって異なります。

于 2012-06-23T22:04:11.030 に答える