良い一日、
Matlabで次のことをしたいと思います:
var1 = 10;
var2 = 15;
var3 = 20;
j = 1;
for i = [var1,var2,var3]
a(j) = i + 10;
j = j + 1;
end
clear j;
結果:
a(1) = var1 + 10 = 20
a(2) = var1 + 10 = 25
a(3) = var1 + 10 = 30
何か案は?
良い一日、
Matlabで次のことをしたいと思います:
var1 = 10;
var2 = 15;
var3 = 20;
j = 1;
for i = [var1,var2,var3]
a(j) = i + 10;
j = j + 1;
end
clear j;
結果:
a(1) = var1 + 10 = 20
a(2) = var1 + 10 = 25
a(3) = var1 + 10 = 30
何か案は?
水晶玉を多用する。var1、var2 などの名前を動的に生成したいようです。そうしないでください。このように変数に名前を付ける利点はほとんどありません。代わりに cell 配列を使用します。
var{1} = 10;
var{2} = 15;
var{3} = 20;
あなただけを使用できるように:
for i = 1:length(var)
a(j) = var{i} + 10;
...
中括弧に注意してください。
変数がすべて同じサイズである場合は、配列スライスを使用することをお勧めします。 var(:, i)
またはvar(:,:,:,i)
、たとえば
成功した答えを持つ同様の質問がありました: Matlab の文字列を使用した foreach ループ
おそらく、{} でセル配列構文を使用します。
for i = {var1,var2,var3}
a(j) = i + 10;
j = j + 1;
end
@FloHin と @Peter の両方が、セルの使用について言及しています。これは、非スカラー変数の数が限られている場合に役立つ優れた方法です。特定の形式に従う未知の数の変数を扱っている場合、eval
関数を使用して現在の変数の値をオンデマンドで取得できます。
var1 = 10;
var2 = 15;
var3 = 20;
var4 = 30;
# ...
# more variables following the varN = x pattern
all_variables = who('var*');
num = numel(all_variables);
a = zeros(num, 1);
for i = 1:num
a(i) = eval(all_variables{i}) + 10;
end