好日子環路,對於運行在不同的變量
我想做到以下幾點在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等。不要。以這種方式命名變量幾乎沒有優勢。使用電池陣列代替:
var{1} = 10;
var{2} = 15;
var{3} = 20;
,這樣就可以只使用:
for i = 1:length(var)
a(j) = var{i} + 10;
...
注意大括號。
如果您的變量都是相同的大小,那麼使用數組切片更好。例如var(:, i)
或var(:,:,:,i)
,例如
有一個成功的應答類似的問題:foreach loop with strings in Matlab
也許使用單元陣列語法與{}:
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
有什麼錯'A = [VAR1,VAR2 ,var3] + 10'?它完成了相同的。 – Alexey
因爲我的實際情況比這個例子複雜得多。 – Pietair
如果不知道真實情況,我無法回答這個問題。你的問題是什麼? – Alexey