2013-09-16 108 views
-1

我正在写微芯片设计程序,但它给出了一个错误。有人可以帮我纠正它吗? 这里是我的代码:微芯片设计程序

clc; 
clear all; 
close all; 
f=2.4*10^9; 
er=4.4; 
h=1.6*10^-3; 
c=3*10^8; 
w=c/(2*f*((er+1)/2)^(0.5)); 
eef=((er+1)/2+((er+1)/2)*(1+(12*h/w)))^-0.5; 
lef=c/(2*f*(eef^0.5)); 
dl=(0.412*h)*(eef+0.3)*((w/h+0.264)/((eef-0.258)*((w/h)+0.8))); 
l=lef-(2*dl); 
lg=6*h+l; 
wg=6*h+w; 
%microstrip line design 
zo=50; 
A=(zo/99)*sqrt((er+1)/2)+(((er-1)/(er+1))*(0.23+(0.11*er))); 
B=(377*pi)/(2*zo*sqrt(er)); 
wbd=(8*exp(A)/exp(2*(A))-2); 
if(wbd>2) 
    wbd=(2/pi)*((B-1-log(2*B-1)+((er-1)/(2*er))*log(B-1)+0.39-(0.61/er))); 
end 
w=wbd*h; 
ko=(2*pi*f)/c; 
Ll=pi/(sqrt(eef)*ko); 
c=3*10^8; 
la=c/f; 
b=(2*pi*sqrt(er))/(la); 
i=1; 
for w=1:0.1:38 
    i=i+1; 
    rin(1,i)=round(((120*la)^2)+(((377*h)/(sqrt(er))*w*10^-3)^2)*(tan(b*w*10^-3)^2)/(240*w*10^-3*la)*(1+(tan(b*w*10^-3)^2))); 
    if(rin(1,i)>45 && rin(1,i)<50) 
     n=i; 
    end 
end 
feed=n*0.1; 
l=l*10^3; 
w=w*10^3; 
lg=lg*10^3; 
wg=wg*10^3; 
wl=wl*10^3; 
Ll=Ll*10^3; 
display(l); 
display(w); 
display(lg); 
display(wg); 
display(wl); 
display(Ll); 
display(feed); 

错误如下:

??? Undefined function or variable 'n'. 

Error in ==> Antenna at 37 
feed=n*0.1; 
+0

你认为'n'应该是什么值? –

+0

feed = n * 0.1;在这一行中matlab没有找到n的值,为了纠正这个错误,给变量n赋了一个值 –

+0

n必须从上面得到它的值for循环na? –

回答

1

只有n的单个声明,这是一个if语句中。显然这个声明从来没有达到过。因此,要么确保达到声明,要么在代码稍后引用它之前提供一些n的默认定义。

+0

@SidharthaRamachandran这个回答对您有帮助吗? – Schorsch