reshapeで空欄を詰めない方法

6 vues (au cours des 30 derniers jours)
可野 谷上
可野 谷上 le 30 Nov 2020
Commenté : 可野 谷上 le 1 Déc 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で固定して、もとの行列の要素が混ざらないようにしたいです。
どのようなコードを書けばよいでしょうか。
よろしくお願いいたします。

Réponse acceptée

Akira Agata
Akira Agata le 1 Déc 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 commentaire
可野 谷上
可野 谷上 le 1 Déc 2020
回答ありがとうございます!解決しました!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!