[]
For Loop Icinde Condition Degistirme..
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?
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 (21.05.13 23:27:07)
@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.
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 (21.05.13 23:40:40)
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 (21.05.13 23:55:29)
1