Matlabのマトリックスを変更するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/793574

  •  16-09-2019
  •  | 
  •  

質問

私が持っていたとします 1 x 12 マトリックスと私はそれをaにサイズ変更したかった 4 by-3 マトリックス。どうすればこれを行うことができますか?

私の現在の解決策は醜いです:

for n = 1:(length(mat)/3)
    out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) );
end

これを行うためのより良い方法はありますか?

役に立ちましたか?

解決

reshape もちろん、によって述べられているように、適切な解決策です @gnovice.

の素晴らしい機能 reshape それがこれを可能にするということです:

A = 1:12;
B = reshape(A,4,[]);
B =
     1     5     9
     2     6    10
     3     7    11
     4     8    12

ですから、いくつの列があるかわからない場合は、 reshape あなたのためにそれを計算します。同じく、 reshape あなたがそれを除外した場合、行の数を記入します。

C = reshape(A,[],4)
C =
     1     4     7    10
     2     5     8    11
     3     6     9    12

他のヒント

試してみてください 再構築 関数:

A = (1-by-12 matrix);
B = reshape(A,4,3);

マトリックスに注意してください b の要素で満たされます a 列ごとの方法で(つまり、列が上から下に入力され、左に移動します)。

例:

>> A = 1:12;
>> B = reshape(A,4,3)

B =

     1     5     9
     2     6    10
     3     7    11
     4     8    12

Gnoviceのソリューションを拡張するには:

マトリックス構造の別の順序が必要な場合は、Transpose( 'Operator)または permute() あなたが電話した後に寸法の順序を変更する reshape().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top