Effacer les filtres
Effacer les filtres

配列の垂直連結

9 vues (au cours des 30 derniers jours)
ST
ST le 2 Mar 2021
Commenté : ST le 3 Mar 2021
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くらいの設定で。)

Réponse acceptée

OH
OH le 2 Mar 2021
Modifié(e) : OH le 2 Mar 2021
配列結合したいけれど、配列名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 commentaire
ST
ST le 3 Mar 2021
回答ありがとうございます。
evalを用いてこちらの方でできました。
ありがとうございます。

Connectez-vous pour commenter.

Plus de réponses (1)

Hernia Baby
Hernia Baby le 2 Mar 2021
あまりお勧めではないですが、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 commentaire
ST
ST le 3 Mar 2021
回答ありがとうございます。
evalを用いたこちらの方法参考になりました。
ありがとうございます。

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!