配列の垂直連結

조회 수: 9 (최근 30일)
ST
ST 2021년 3월 2일
댓글: ST 2021년 3월 3일
sample1=[1 2 3; 1 2 3; 1 2 3]
sample2=[2 2 3]
sample3=[6 2 3; 2 2 3]
sample(n)=[5 2 3; 2 1 3; 2 7 3]
のような配列名に規則性があり、配列がM行×3列の配列同士を垂直を方向に連結するにはどうしたらよいですか。
(配列数nは50くらいの設定で。)

채택된 답변

OH
OH 2021년 3월 2일
편집: OH 2021년 3월 2일
配列結合したいけれど、配列名50個が入力となるのでお悩みということでしょうか。
eval()を使ってみてはどうでしょう。
変数resultへ代入するやり方が良くないですが、書いてみました。(配列のサイズがfor1回毎に変わるのは遅いので良くない)
n = 4;%データの数
result = [];%配列初期化
data1 = [1 2 3;1 2 3;1 2 3];
data2 = [2 2 3];
data3 = [6 2 3;2 2 3];
data4 = [5 2 3;2 1 3;2 7 3];
for i = 1:n
eval(sprintf('result = [result;data%d];',i));%result = [result;data(i)]を実行
end
  댓글 수: 1
ST
ST 2021년 3월 3일
回答ありがとうございます。
evalを用いてこちらの方でできました。
ありがとうございます。

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

추가 답변 (1개)

Hernia Baby
Hernia Baby 2021년 3월 2일
あまりお勧めではないですが、eval関数を使ってください
clear
% 最初のデータ
sample1=[1 2 3; 1 2 3; 1 2 3];
sample2=[2 2 3];
sample3=[6 2 3; 2 2 3];
sample4=[5 2 3; 2 1 3; 2 7 3];
% ワークスペースの変数の数をカウント
l = length(who);
% 垂直に文字を連結
s = [];
for i = 1:l
eval(sprintf('s = vertcat(s,sample%i);',i));
end
% 確認
s
s =
1 2 3
1 2 3
1 2 3
2 2 3
6 2 3
2 2 3
5 2 3
2 1 3
2 7 3
  댓글 수: 1
ST
ST 2021년 3월 3일
回答ありがとうございます。
evalを用いたこちらの方法参考になりました。
ありがとうございます。

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

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!