reshapeで空欄を詰めない方法
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
reshape関数を使って行列変換をしたいです。
データが膨大なので簡単な数字で代用すると、
1 3 2 1 3 2 3 4
2 2 4 2 1 5 3 2
2 3 4 5 6 5 3 4
という3×8の行列を
1 3 2
1 3 2
3 4
2 2 4
2 1 5
3 2
2 3 4
5 6 5
3 4
のように列数を3で固定して、もとの行列の要素が混ざらないようにしたいです。
どのようなコードを書けばよいでしょうか。
よろしくお願いいたします。
0 Kommentare
Akzeptierte Antwort
Akira Agata
am 1 Dez. 2020
出力をN行3列の配列にするには、各行の要素数を3に揃える必要があります。このため、ご質問のようなケースでは各行の要素数を揃えるために空欄を別の値で埋める必要があります。例えば空欄をNaNで埋めるとして、下記のような方法はいかがでしょうか?
A = [1 3 2 1 3 2 3 4;
2 2 4 2 1 5 3 2;
2 3 4 5 6 5 3 4];
% reshape後をN行3列の配列にするためNaNを追加
A = [A, nan(3,1)];
% reshapeで配列の形を変換
B = reshape(A',3,[])';
>> B
B =
1 3 2
1 3 2
3 4 NaN
2 2 4
2 1 5
3 2 NaN
2 3 4
5 6 5
3 4 NaN
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!