Matlabのマトリックスを変更するにはどうすればよいですか?
質問
私が持っていたとします 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()
.
所属していません StackOverflow