for文でループ変数を名前に含む変数を用いて計算したい
    8 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
現在for文を用いて連番のついた変数で計算を行い、結果を配列に格納しようと考えています。
具体的には
%繰り返し処理
for i=1:6
    %連番のついた変数で計算を行う処理 以下(i)はループ変数の中身
    dataA(i)=(data(i)alpha+data(i)beta)/2
    dataB(i)=(data(i)gamma+data(i)delta)/2
    %行列の1列i行目、2列i行目にdataAi,dataBiを格納する処理
end
上記のようなイメージで、ループ変数をそのまま用いて"data1alpha"~"data6alpha"のように連番のついた変数で計算を行い、
結果を"dataA1"~"dataA6","dataB1"~"dataB6"として2x6行の行列にそれぞれ格納、というような繰り返し処理を行いたいのですが、このような処理は可能でしょうか?
ご教授頂ければ幸いです。
0 commentaires
Réponse acceptée
  Atsushi Ueno
      
 le 7 Août 2024
        eval 関数で望みの処理を実装可能ですが、これは推奨されない方法です。
clear
for i = 1:6
    eval("data" + i + "alpha = 0;"); % サンプルデータの準備
    eval("data" + i + "beta  = 0;"); % サンプルデータの準備
    eval("data" + i + "delta = 0;"); % サンプルデータの準備
    eval("data" + i + "gamma = 0;"); % サンプルデータの準備
    %連番のついた変数で計算を行う処理 以下(i)はループ変数の中身
    eval("dataA" + i + " = (data" + i + "alpha + data" + i + "beta) / 2;");
    eval("dataB" + i + " = (data" + i + "gamma + data" + i + "delta) / 2;");
    %行列の1列i行目、2列i行目にdataAi,dataBiを格納する処理
    eval("out(i,:) = [dataA" + i + ", dataB" + i + "];");
end
who
2 commentaires
  Atsushi Ueno
      
 le 7 Août 2024
				配列を扱うべきですね。
clear
abdg = zeros(6,4); % サンプルデータの準備
for i = 1:6
    out(i,:) = [(abdg(i,1) + abdg(i,2)) / 2, (abdg(i,3) + abdg(i,4)) / 2];
end
whos
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur ループと条件付きステートメント 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!
