reshapeで空欄を詰めない方法

5 Ansichten (letzte 30 Tage)
可野 谷上
可野 谷上 am 30 Nov. 2020
Kommentiert: 可野 谷上 am 1 Dez. 2020
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で固定して、もとの行列の要素が混ざらないようにしたいです。
どのようなコードを書けばよいでしょうか。
よろしくお願いいたします。

Akzeptierte Antwort

Akira Agata
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
  1 Kommentar
可野 谷上
可野 谷上 am 1 Dez. 2020
回答ありがとうございます!解決しました!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Logical finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!