📄 smith.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case 'callback3'
%首先清除前一次留下的图形和数据
delete(findobj('color','k'));delete(findobj('color','b'));delete(findobj('color','r'));delete(findobj('color','m'));
delete(findobj('position',[375,150,70,20]));delete(findobj('position',[450,150,100,24]));
h130=uicontrol('style','edit','string','','position',[442,300,55,24],'fontsize',8);
h132=uicontrol('style','edit','string','','position',[505,300,55,24],'fontsize',8);
h110=uicontrol('style','edit','string','','position',[442,360,55,24],'fontsize',8);
h112=uicontrol('style','edit','string','','position',[505,360,55,24],'fontsize',8);
h210=uicontrol('style','edit','string','','position',[442,330,55,24],'fontsize',8);
h212=uicontrol('style','edit','string','','position',[505,330,55,24],'fontsize',8);
h150=uicontrol('style','edit','string','','position',[450,240,100,24],'fontsize',12);
h160=uicontrol('style','edit','string','','position',[450,210,100,24],'fontsize',12);
h140=uicontrol('style','edit','string','','position',[450,270,100,24],'fontsize',12);
h170=uicontrol('style','edit','string','','position',[450,180,100,24],'fontsize',12);
answer3 =inputdlg({'请输入归一化电阻值R:','请输入归一化电抗值X:'},'INPUT R+jX=',1);%输入归一化阻抗值
a=answer3(1,1);b=answer3(2,1);
R=str2double(a);%提取电阻电抗值
X=str2double(b);
U=(R^2+X^2-1)/(R^2+2*R+1+X^2);%转化为坐标值 即U V
V=2*X/(R^2+2*R+1+X^2);
tr=2*pi*(0:0.00001:1);
cosA=U/sqrt(U^2+V^2);%画相角线
sinA=V/sqrt(U^2+V^2);
r0=0:0.00001:1;
g0=plot(r0*cosA,r0*sinA,'k','linewidth',1.5);
axis square;
hold on;
rr=1/(1+R);cr=1-rr;
g1=plot(cr+rr*cos(tr),rr*sin(tr),'r','linewidth',1.5);%画电阻圆
axis square;
hold on;
x=X;
rx=1/x;cx=rx;
tx=2*atan(x)*(0:0.0001:1);
if tx<pi
g2=plot(1-rx*sin(tx),cx-rx*cos(tx),'m','linewidth',1.5);%画电抗圆
else
g3=plot(1-rx*sin(tx),-cx-rx*cos(tx),'m','linewidth',1.5);
end
hold on;
r=sqrt(U^2+V^2);
g4=plot(r*cos(tr),r*sin(tr),'--','linewidth',1.5);% 等反射系数圆的半径
axis square;
hold on; %当有新的图形输入的时候 原来图形被清除,同时保证 第二次取点的时候背景保留。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%取点后显示输出参数
h130=uicontrol('style','edit','string',U,'position',[442,300,55,24],'fontsize',7.5,'HorizontalAlignment','center'); %反射系数
h132=uicontrol('style','edit','string',V,'position',[505,300,55,24],'fontsize',7.5,'HorizontalAlignment','center');
R=(1-U^2-V^2)/((1-U)^2+V^2); %阻抗
X=2*V/((1-U)^2+V^2);
h110=uicontrol('style','edit','string',R,'position',[442,360,55,24],'fontsize',7.5,'HorizontalAlignment','center');
h112=uicontrol('style','edit','string',X,'position',[505,360,55,24],'fontsize',7.5,'HorizontalAlignment','center');
G=R/(R^2+X^2);%导纳
B=-X/(R^2+X^2);
h210=uicontrol('style','edit','string',G,'position',[442,330,55,24],'fontsize',8,'HorizontalAlignment','center');
h212=uicontrol('style','edit','string',B,'position',[505,330,55,24],'fontsize',8,'HorizontalAlignment','center');
zhu_bo_bi=(1+sqrt(U^2+V^2))/(1-sqrt(U^2+V^2));%驻波比
%zhu_bo_bi
h150=uicontrol('style','edit','string',...
[sprintf('%1.4g',zhu_bo_bi)],'position',[450,240,100,24],'fontsize',12);
A0=atan(V/U); %相位角
if U<0
A=(180/pi)*(A0+pi);
elseif V>=0
A=(180/pi)*A0;
else
A=(180/pi)*(A0+2*pi);
end
h160=uicontrol('style','edit','string',...
[sprintf('%1.4g',A),'度'],'position',[450,210,100,24],'fontsize',12);
if V>=0
B=(0.5/360)*(180-A);
else
B=0.75-(0.5/360)*A;
end
h170=uicontrol('style','edit','string',... %波长数
[sprintf('%1.4g',B)],'position',[450,180,100,24],'fontsize',12);
xing_bo_xi_shu=1/zhu_bo_bi; %行波系数
h140=uicontrol('style','edit','string',...
[sprintf('%1.4g',xing_bo_xi_shu)],'position',[450,270,100,24],'fontsize',12);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%阻抗求解
case 'callback4'
%首先清除前一次留下的图形和数据
delete(findobj('color','k'));delete(findobj('color','b'));delete(findobj('color','r'));delete(findobj('color','m'));
delete(findobj('position',[375,150,70,20]));delete(findobj('position',[450,150,100,24]));
h130=uicontrol('style','edit','string','','position',[442,300,55,24],'fontsize',8);
h132=uicontrol('style','edit','string','','position',[505,300,55,24],'fontsize',8);
h110=uicontrol('style','edit','string','','position',[442,360,55,24],'fontsize',8);
h112=uicontrol('style','edit','string','','position',[505,360,55,24],'fontsize',8);
h210=uicontrol('style','edit','string','','position',[442,330,55,24],'fontsize',8);
h212=uicontrol('style','edit','string','','position',[505,330,55,24],'fontsize',8);
h150=uicontrol('style','edit','string','','position',[450,240,100,24],'fontsize',12);
h160=uicontrol('style','edit','string','','position',[450,210,100,24],'fontsize',12);
h140=uicontrol('style','edit','string','','position',[450,270,100,24],'fontsize',12);
h170=uicontrol('style','edit','string','','position',[450,180,100,24],'fontsize',12);
answer4 =inputdlg({'请输入特征阻抗值Z0(Ω):','请输入终端负载电阻值R:','请输入终端负载电抗值X:','请输入归一化传输线长L:'},'INPUT Z0,Zl,L',1);%输入归一化阻抗值
a=answer4(1,1);b=answer4(2,1);c=answer4(3,1);d=answer4(4,1);
Z0=str2double(a);
Rl=str2double(b);%提取电阻电抗值
Xl=str2double(c);
Zl=Rl+j*Xl;
l=str2double(d);
Z=(Zl+j*Z0*tan(2*pi*l))/(Z0+j*Zl*tan(2*pi*l));
R=real(Z);
X=imag(Z);
U=(R^2+X^2-1)/(R^2+2*R+1+X^2);%转化为坐标值 即U V
V=2*X/(R^2+2*R+1+X^2);
tr=2*pi*(0:0.00001:1);
cosA=U/sqrt(U^2+V^2);%画相角线
sinA=V/sqrt(U^2+V^2);
r0=0:0.00001:1;
g0=plot(r0*cosA,r0*sinA,'k','linewidth',1.5);
axis square;
hold on;
rr=1/(1+R);cr=1-rr;
g1=plot(cr+rr*cos(tr),rr*sin(tr),'r','linewidth',1.5);%画电阻圆
axis square;
hold on;
x=X;
rx=1/x;cx=rx;
tx=2*atan(x)*(0:0.0001:1);
if tx<pi
g2=plot(1-rx*sin(tx),cx-rx*cos(tx),'m','linewidth',1.5);%画电抗圆
else
g3=plot(1-rx*sin(tx),-cx-rx*cos(tx),'m','linewidth',1.5);
end
hold on;
r=sqrt(U^2+V^2);
g4=plot(r*cos(tr),r*sin(tr),'--','linewidth',1.5);% 等反射系数圆的半径
axis square;
hold on; %当有新的图形输入的时候 原来图形被清除,同时保证 第二次取点的时候背景保留。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%取点后显示输出参数
h130=uicontrol('style','edit','string',U,'position',[442,300,55,24],'fontsize',7.5,'HorizontalAlignment','center'); %反射系数
h132=uicontrol('style','edit','string',V,'position',[505,300,55,24],'fontsize',7.5,'HorizontalAlignment','center');
R=(1-U^2-V^2)/((1-U)^2+V^2); %阻抗
X=2*V/((1-U)^2+V^2);
h110=uicontrol('style','edit','string',R,'position',[442,360,55,24],'fontsize',7.5,'HorizontalAlignment','center');
h112=uicontrol('style','edit','string',X,'position',[505,360,55,24],'fontsize',7.5,'HorizontalAlignment','center');
G=R/(R^2+X^2);%导纳
B=-X/(R^2+X^2);
h210=uicontrol('style','edit','string',G,'position',[442,330,55,24],'fontsize',8,'HorizontalAlignment','center');
h212=uicontrol('style','edit','string',B,'position',[505,330,55,24],'fontsize',8,'HorizontalAlignment','center');
zhu_bo_bi=(1+sqrt(U^2+V^2))/(1-sqrt(U^2+V^2));%驻波比
%zhu_bo_bi
h150=uicontrol('style','edit','string',...
[sprintf('%1.4g',zhu_bo_bi)],'position',[450,240,100,24],'fontsize',12);
A0=atan(V/U); %相位角
if U<0
A=(180/pi)*(A0+pi);
elseif V>=0
A=(180/pi)*A0;
else
A=(180/pi)*(A0+2*pi);
end
h160=uicontrol('style','edit','string',...
[sprintf('%1.4g',A),'度'],'position',[450,210,100,24],'fontsize',12);
if V>=0
B=(0.5/360)*(180-A);
else
B=0.75-(0.5/360)*A;
end
h170=uicontrol('style','edit','string',... %波长数
[sprintf('%1.4g',B)],'position',[450,180,100,24],'fontsize',12);
xing_bo_xi_shu=1/zhu_bo_bi; %行波系数
h140=uicontrol('style','edit','string',...
[sprintf('%1.4g',xing_bo_xi_shu)],'position',[450,270,100,24],'fontsize',12);
%输出实际阻抗
h18=uicontrol('style','text','string','输入阻抗=','position',[375,150,70,20],'fontsize',11,'fontweight','demi','foregroundcolor','r','backgroundcolor',[0.8 0.8 0.8]);
h180=uicontrol('style','edit','string',[sprintf('%1.4g',R*Z0),'+j(',sprintf('%1.4g',X*Z0),')'],'position',[450,150,100,24],'fontsize',8);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case 'callback23' %给帮助和退出按钮设置具体的回调函数和操作
helpdlg(sprintf('单击取点,将指针置于圆图范围内即可显示参数\n 单击左边四个按钮进入各自演示界面.\n 传输线求解可以完成典型的传输线求解题型.\n 单击退出按钮并确认即可关闭所有界面!'),'帮助');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case 'callback24'
response1=questdlg(' 确定要退出吗?','提示');
if (strcmp(response1,'Yes'))
close;
pause(0.2);
helpdlg(' 感谢您的使用!','THANK YOU!');
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -