2013-05-31 52 views
-2

好日子環路,對於運行在不同的變量

我想做到以下幾點在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 

任何想法?

+0

有什麼錯'A = [VAR1,VAR2 ,var3] + 10'?它完成了相同的。 – Alexey

+0

因爲我的實際情況比這個例子複雜得多。 – Pietair

+1

如果不知道真實情況,我無法回答這個問題。你的問題是什麼? – Alexey

回答

2

齧合大量使用水晶球。看起來你想動態生成名稱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),例如

0

@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 
相關問題