/ /列ベクトルの変形-MATLAB、matrix、vector、reshape

列ベクトルの変形 - matlab、行列、ベクトル、変形

こんにちは、私はMATLABで作業していて、「z」があります 列ベクトル (9680 x 1)の次元を持ちます。次元(44 x 220)の配列 "z"を持つために形状を変更したい。私は次のことをしています:

z=reshape(z,44,220);

私も試みた:

z=reshape(z,[44,220]);

しかし、出力は正しくありません(少なくとも最初の行)。出力行列を初期ベクトルと比較することで確認できます。

列の最初の220の位置が必要です行列の最初の行の長さになるベクトル、次にベクトルの次の220の位置が行列の2番目の行になるなど、44行を取得するまで続きます。

何が間違っていますか?ご協力いただきありがとうございます。

回答:

回答№1は6

Matlabは、マトリックスの値を列メジャー形式で保存します(これは形状変更時に重要です)。行メジャーが必要なため、行う必要があります

z = reshape(z, [220 44]).";

つまり、後で転置します。


回答№2については2

私は使用する アンドレアス・H「アプローチ。

別の方法として、 vec2mat それを行うCommunications Toolboxの機能で、必要に応じて欠損値を埋めることもできます。

>> x = 11:18;
>> vec2mat(x,4) %// no padding needed
ans =
11    12    13    14
15    16    17    18
>> vec2mat(x,5) %// padding needed; with 0 by default
ans =
11    12    13    14    15
16    17    18     0     0
>> vec2mat(x,5,-1) %// padding needed; with specified value
ans =
11    12    13    14    15
16    17    18    -1    -1