は、私が持っているものです。ベクトルを作り直して行列を作る方法は?ここ
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
そして、ここでは、私が取得したいものです。
[
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
]
行と列(例では3と4)の数は、既に知られています。
どうすればいいですか?
は、私が持っているものです。ベクトルを作り直して行列を作る方法は?ここ
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
そして、ここでは、私が取得したいものです。
[
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12
]
行と列(例では3と4)の数は、既に知られています。
どうすればいいですか?
は
マット= vec2mat(VEC、matcol)が一度に1行を作成、matcol列の行列にベクトルVECを変換言います。 vecの長さがmatcolの倍数でない場合、余分なゼロはマットの最後の行に配置されます。マトリックスマットはceil(長さ(vec)/ matcol)の行を持ちます。
b = reshape(a, 4, 3)'
あなたの例のために働くだろうします。要素は元のものから取り出され、新しい行列に列方向に挿入されます。
さらに、reshape
は、組み込みのMATLAB関数です。通信ツールボックスを必要とする他の解決策、例えばvec2mat
が存在する。このguide
ありがとう、chx、これは動作します! – izhak
注!これには「通信システムツールボックス」が必要です。 「正しい」答えは「変形」です。 'reshape(vec、[]、matcol)'はベクトルを 'matcol'カラムを持つ行列に作り直します。行数は、再形成時にMATLABによって自動的に計算されます。 –
リシェイプソリューションは、(少なくとも私がテストした正方行列についても)より良い性能を持っています。 – rnoodle