異なる列数の行列の連結について

조회 수: 100(최근 30일)
健気 大川
健気 大川 2021년 10월 25일
댓글: 健気 大川 2021년 10월 28일
例えば、異なる列数を持つ、y1=[1;2;3;4;5;6;7;8;9;10]とy2=[11;12;13;14;15]があったとします。
これを別の行列y(:,1)=y1,y(:,2)=y2のように結合したいです。どなたかお時間がある方助言をお願い致します。
(連結させる前の元の行列は必ずn×1 (nは任意の数)です。)
(現在は2つの行列だけですが、それ以上の行列も連結するようにしたいです)

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 10월 25일
편집: Atsushi Ueno 2021년 10월 26일
上記リンク先を踏まえ考えられる方法を2つ挙げます
  • ベクトルのサイズを一致させて連結し行列にする(上記リンク先と同じ方法です)
  • (空いた要素はゼロでなくNaNで埋めて、rmmissing関数でNaNを除外して取り出すべきです)
  • 上記リンク先のこの方法は、ベクトルだけでなく複数列の行列も連結可能です
y1=[1;2;3;4;5;6;7;8;9;10];
y2=[11;12;13;14;15];
y3=[1;1;3;4;15];
y4=[11;12;13;14];
y5=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1];
n = 4; a = 0;
for i = 1:n
eval(['sy' num2str(i) ' = size(y' num2str(i) ');']);
eval(['a = max(a, sy' num2str(i) ');']);
end
a = a(1); y = [];
for i = 1:n
eval(['y = [y,[y' num2str(i) ';NaN(abs([a 0]-sy' num2str(i) '))]];']);
end
y
y = 10×4
1 11 1 11 2 12 1 12 3 13 3 13 4 14 4 14 5 15 15 NaN 6 NaN NaN NaN 7 NaN NaN NaN 8 NaN NaN NaN 9 NaN NaN NaN 10 NaN NaN NaN
rmmissing(y(:,4))
ans = 4×1
11 12 13 14
  • 行列ではなくセル配列で纏める
y = {};
for i = 1:n
eval(['y = [y, y' num2str(i) '];']);
end
y
y = 1×4 cell array
{10×1 double} {5×1 double} {5×1 double} {4×1 double}
y{4}
ans = 4×1
11 12 13 14
  댓글 수: 3
健気 大川
健気 大川 2021년 10월 28일
何度も詳しく教えて頂きありがとうございます。無事解決いたしました。

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!