2016-03-14 101 views
1

基本上我想要做的是让我的for循环运行迭代时,当n = 4,8,16,32,...,512。我之前尝试在for循环中将我的迭代变量乘以,但MatLab不会允许它。我试图寻找生成指数间隔的矢量来使用,但没有命令。这似乎是一个非常简单的任务,我可以在它之前使用一个条件语句,但这看起来像是糟糕的编码。matlab循环迭代的间距

是否有一个简单而优雅的方式来设置我的循环条件?

%% Analysis - Trapezoidal Rule 


for n = 4:k:512 
h = (b-a)/n; 
changing_a = a+h; 
for j = 1:n-1 
    sum = function_q4_a(changing_a); 
    changing_a = changing_a + h; 
end 

integral_value = ((b-a)/(2*n)) * (function_q4_a(a) + 2*sum + function_q4_a(changing_a)); 
disp('Current n = '); 
disp(n); 
disp('Integral value is: '); 
disp(integral_value); 

k = k*2;end 

回答

4

可以简单地做类似

for n = 2.^(2:9) 
    % Some code here 
end 

为了更精确,

2.^(2:9) 

建立一个向量[2^2,2^3,2^4,2^5,2^6,2^7,2^8,2^9] - 使用。^ element-wise运算符 - 然后您只需遍历此矢量的值。