⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smith.m

📁 实现smith圆图显示和阻抗匹配
💻 M
📖 第 1 页 / 共 2 页
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    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 + -