reshapeで空欄を詰めない方法

4 ビュー (過去 30 日間)
可野 谷上
可野 谷上 2020 年 11 月 30 日
コメント済み: 可野 谷上 2020 年 12 月 1 日
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で固定して、もとの行列の要素が混ざらないようにしたいです。
どのようなコードを書けばよいでしょうか。
よろしくお願いいたします。

採用された回答

Akira Agata
Akira Agata 2020 年 12 月 1 日
出力を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 件のコメント
可野 谷上
可野 谷上 2020 年 12 月 1 日
回答ありがとうございます!解決しました!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!