for (angle_limit = theta_min_1 : 1 : theta_min_2) {
nKPts = angle_limit - theta_min_1 + 1;
kx1 = 2*pi*n*f1/c*sin(theta_min_1/180*pi);
kx2 = 2*pi*n*f2/c*sin(angle_limit/180*pi);
kx = linspace(kx1,kx2,nKPts);
fcenter = (f2+f1)/2;
theta_source = 180/pi*asin(kx*c/2/pi/n/fcenter);
theta_maximum = 180/pi*asin(kx*c/2/pi/n/f1);

test_var = 0;
for (j=1:nKPts) {
if (abs(theta_maximum(j))<90) {
test_var = test_var + 1;
}
}

if (test_var > nKPts) {
theta_min_2 = angle_limit - 1;

# HERE SHOULD COME THE SIMULATION

theta_min_1 = angle_limit;
}
}


seklinde bi kod var diyelim. bu kodun son kismindaki if condition saglanirsa, if altindaki islemin yapilmasini ve en sonunda da theta_min=angle_limit yapmasini istiyorum. boylece ana for-loop'un condition'ini degistirmeyi amacladim, yani yeni for-loop condition olarak angle_limit = angle_limit : 1 : theta_min_2 kullanmasini istedim. duzgun bi teknik mi bu? degilse dogrusu nasil yapilabilir?

 

angle_limit = angle_limit : 1 : theta_min_2 seklinde bir kullanimi ilk defa gordum aslinda. tam olarak hangi durumda for'a sokmak istiyorsun?

x daemon

@x daemon:
matlab'e benziyen bi dil bu (lumerical diye bi programin kendi dili).
angle_limit = angle_limit : 1 : theta_min_2 de angle_limit'i, angle_limit'ten baslayarak 1'er 1'er theta_min_2'ye kadar gotur demek. tam olarak en sondaki if calistiginda (yani test_var > nKPts durumunda) bu en distaki for-loop'u bitirsin, yeni bir for loop'a baslasin istiyorum. yani en distaki for loop'un condition'ini angle_limit = angle_limit : 1 : theta_min_2 seklinde yapip yeniden degerlendirsin istiyorum.

gerard

recursive fonksiyonla halledebilirsin gibi duruyor. if saglandiginda fonksiyonu yeni degiskenle yeniden cagirirsin. for'u bitirmek icin de return ya da exit 'i kullanabilirsin

x daemon
1

mobil görünümden çık