reshapeで空欄を詰めない方法

5 次查看(过去 30 天)
可野 谷上
可野 谷上 2020-11-30
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 CenterFile Exchange 中查找有关 行列および配列 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!