配列の垂直連結

8 ビュー (過去 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 Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!