こんにちは、私はMATLABで作業していて、「z」があります 列ベクトル (9680 x 1)の次元を持ちます。次元(44 x 220)の配列 "z"を持つために形状を変更したい。私は次のことをしています:
z=reshape(z,44,220);
私も試みた:
z=reshape(z,[44,220]);
しかし、出力は正しくありません(少なくとも最初の行)。出力行列を初期ベクトルと比較することで確認できます。
列の最初の220の位置が必要です行列の最初の行の長さになるベクトル、次にベクトルの次の220の位置が行列の2番目の行になるなど、44行を取得するまで続きます。
何が間違っていますか?ご協力いただきありがとうございます。
回答:
回答№1は6Matlabは、マトリックスの値を列メジャー形式で保存します(これは形状変更時に重要です)。行メジャーが必要なため、行う必要があります
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