ADS实验教程程序.docx
《ADS实验教程程序.docx》由会员分享,可在线阅读,更多相关《ADS实验教程程序.docx(35页珍藏版)》请在冰豆网上搜索。
ADS实验教程程序
程序中要调用的一些函数
画等Q线的程序
functionQn_contours(Qn,figure_number)
%Usage:
Qn_contours(Qn,figure_number)
%
%Purpose:
plotsconstantnodalqualityfactor
%contoursintheSmithChart
%
%Inputparameters:
%Qn-setofnodalqualityfactorsforwhich
%contourswillbeplotted
%figure_number-optionalparameterspecifying
%thereferencetothefigurecontainingSmith
%Chart.Ifthisparameterisnotspecifiedthen
%currentlyactivefigurewillbeused
%
ifnargin>1
figure(figure_number);
end;
holdon;
N=length(Qn);
M=50;%thenumberofsteps
forn=1:
N
r=sqrt(1+1/Qn(n)^2);
y=1/Qn(n);
alpha=atan(Qn(n));
a=(-M:
M)/M*alpha;
plot(r*sin(a),-y+r*cos(a));
plot(r*sin(a),y-r*cos(a));
end;
画Smith圆的程序
functionfigNumber=smith_chart(option)
%Usage:
smith(option)
%
%Purpose:
createsSmithchartdisplay
%
%Parameters:
%option=0<--Z-SmithChartiscreated(blackcolor,solidline)
%option=1<--Y-SmithChartiscreated(blackcolor,solidline)
%option=2<--ZY-SmithChartiscreated(blackcolor,
%Z-Chart-solidline,Y-Chart-dashedline)
figNumber=figure;
%defineXandRcircles
X=[0.20.5125];
R=[0.20.5125];
%wewanttoplotsmoothcirlceswith101points
alpha=2*pi*(0:
0.01:
1);
%ifnoargumentsarenotspecifiedweassumeZ-chart
ifnargin<1
option=0;
end;
%drawawhitecircle
chart_color=[0.50.50.5];
patch(cos(alpha),sin(alpha),'-','edgecolor',chart_color,'facecolor',get(gca,'color'));
holdon;
plot([-11],[00],'color',chart_color);
forrr=R
xc=rr/(1+rr);%xpositionofthecenter
rd=1/(1+rr);%radiusofthecircle
%plotcircles
if(option==0|option==2)
plot(xc+rd*cos(alpha),rd*sin(alpha),'-','color',chart_color);
end;
ifoption==1
plot(-xc-rd*cos(alpha),rd*sin(alpha),'-','color',chart_color);
end;
ifoption==2
plot(-xc-rd*cos(alpha),rd*sin(alpha),'-','color',chart_color);
end;
end;
forxx=X
xc=1;%xpositionofthecenter
yc=1/xx;%ypositionofthecenter
rd=1/xx;%radiusofthecircle
alpha_xx=2*atan(xx)*(0:
0.01:
1);
if(option==0|option==2)
plot(xc-rd*sin(alpha_xx),yc-rd*cos(alpha_xx),'-','color',chart_color);
plot(xc-rd*sin(alpha_xx),-yc+rd*cos(alpha_xx),'-','color',chart_color);
end;
if(option==1)
plot(-xc+rd*sin(alpha_xx),yc-rd*cos(alpha_xx),'-','color',chart_color);
plot(-xc+rd*sin(alpha_xx),-yc+rd*cos(alpha_xx),'-','color',chart_color);
end;
if(option==2)
plot(-xc+rd*sin(alpha_xx),yc-rd*cos(alpha_xx),':
','color',chart_color);
plot(-xc+rd*sin(alpha_xx),-yc+rd*cos(alpha_xx),':
','color',chart_color);
end;
end
%annotatesmithchart
Z_text_color=[0.500];
Y_text_color=[000.5];
ifoption==0
forrr=R
xc=rr/(1+rr);%xpositionofthecenter
rd=1/(1+rr);%radiusofthecircle
text(xc-rd,0,num2str(rr,'%.1f'),...
'horizontalalignment','left','VerticalAlignment','bottom',...
'color',Z_text_color,'Rotation',90);
end;
forxx=X
alpha_xx=2*atan(1/xx);
text(1.1*cos(alpha_xx),1.1*sin(alpha_xx),num2str(xx,'+%.1f'),...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Z_text_color);
text(1.1*cos(alpha_xx),-1.1*sin(alpha_xx),num2str(xx,'-%.1f'),...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Z_text_color);
end;
text(-1.1,0,'0.0',...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Z_text_color);
text(1.1,0,'\infty',...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Z_text_color);
end;
ifoption==1
forrr=R
xc=-rr/(1+rr);%xpositionofthecenter
rd=-1/(1+rr);%radiusofthecircle
text(xc-rd,0,num2str(rr,'%.1f'),...
'horizontalalignment','right','VerticalAlignment','top',...
'color',Y_text_color,'Rotation',90);
end;
forxx=X
alpha_xx=2*atan(1/xx);
text(-1.1*cos(alpha_xx),-1.1*sin(alpha_xx),num2str(xx,'+%.1f'),...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Y_text_color);
text(-1.1*cos(alpha_xx),+1.1*sin(alpha_xx),num2str(xx,'-%.1f'),...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Y_text_color);
end;
text(1.1,0,'0.0',...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Y_text_color);
text(-1.1,0,'\infty',...
'horizontalalignment','center','VerticalAlignment','middle',...
'color',Y_text_color);
end;
holdoff;
axisimage;
axisoff;
ABCD矩阵转化为S矩阵的程序
functionS=ABCD_to_S(abcd_param,Z0);
dim=size(abcd_param);
S=zeros(dim);
if(length(dim)<3)
N=1;
else
N=dim(3);
end;
for(n=1:
N)
a=abcd_param(1,1,n);
b=abcd_param(1,2,n)/Z0;
c=abcd_param(2,1,n)*Z0;
d=abcd_param(2,2,n);
delta=a+b+c+d;
s11=a+b-c-d;
s12=2*(a*d-b*c);
s21=2;
s22=-a+b-c+d;
S(:
:
n)=[s11,s12;s21,s22]/delta;
end;
计算稳定性的程序
function[k,delta]=K_factor(s_param)
%Usage:
[k,delta]=K_factor(s_param)
%
%Purpose:
returnskfactorforagivens-parametermat