基于 Matlab 的矩形波导仿真

一、矩形波导

矩形波导不能传播TEM波,但可单独传播TE或TM波。其主要用于传输厘米波段,也可以用于毫米波段。

选用直角坐标系,在直角坐标系中采用纵向场法,由无源区麦克斯韦方程组出发可得矩形波导中模的场分量

其中,为微波角频率,可以取0或正整数,波导中可以存在无穷多个TE模场模式。

矩形波导的重要参数有截止波数,相位常数,截止频率。其中

当工作频率低于截止频率时,电磁波衰减很快,波导不能传输相应的模,只有工作频率高于截止频率时,电磁波才能在波导中传播。具有最低截止频率的模式,称为波导的主模,其他模式都称高次模式,在矩形波导内传输的所有模式中,模为主模。

而在矩形波导中传输的模,其磁场纵向分量

波导中传播的电磁场将在波导壁上感应出高频电流,根据边界条件,波导内壁感应出的面电流密度为,即电流的大小和分布取决于紧靠近波导壁的磁场强度。对于矩形波导的模,有

二、仿真流程

文章基于Matlab仿真,仿真使用有限差分法,将时间与空间离散,降低仿真运行的复杂度,而对

于场分布与管壁电流分布,使用Matlab中的quiver3函数来仿真。仿真流程为

而为了仿真具有较好的人机交互性,可以模拟不同结构参数下波导内的不同模式电磁场的分布情况,设计了Matlab的GUI仿真界面

三、仿真代码

矩形波导传播波的三维场分布仿真

clc
clear
close all
warning off

% 矩形波导传播TEm0波的三维场分布仿真

% 参数申明
eps0 = 1e-9 / (36 * pi);                    % 真空中的介电常数
mu0 = 4 * pi * 1e-7;                        % 真空中的磁导率
eps = eps0;                                 % 介质的介电常数
mu = mu0;                                   % 介质的磁导率
a = 22.86;                                  % 矩形波导的宽边长度
a = a * 1e-3;                               % 单位mm
b = 10.16;                                  % 矩形波导的窄边长度
b = b * 1e-3;                               % 单位mm
L = 60;                                     % 矩形波导纵向长度
L = L * 1e-3;                               % 单位mm
f = 9.38;                                   % 电磁波的频率
f = f * 1e9;                                % 单位GHz
t0 = 1;                                     % 仿真时间
m = 1;                                      % 电磁波传播模式
n = 0;                                      % 电磁波传播模式
Hm = 1;                                     % 磁场z分量的振幅
mode = 'TE';

% 变量计算
velocity = 1 / (sqrt(mu0 * eps0));          % 真空中电磁波的传播速度
kc = sqrt((m*pi/a)^2 + (n*pi/b)^2);         % 截止波数
fc = kc*velocity / (2*pi);                  % 截止频率
Omega = 2*pi*f;                             % 电磁波角频率
T = 2*pi/Omega;                             % 电磁波周期
ke = Omega * sqrt(mu*eps);                  % 电磁波波矢
beta = sqrt(ke^2-kc^2);                     % 相位常数

% 判断仿真条件
if f < fc
    error("电磁波频率低于截止频率")
end

% 空间离散
x = 0:0.1*a:a;
y = 0:0.1*b:b;
z = 0:0.05*L:L;
[X,Y,Z] = meshgrid(x,y,z);
num = 0;

% 开始仿真
for t = 0:0.01*T:t0*T

    % 计算空间各个场
    Ex = -(Omega*mu0/kc^2) * (n*pi/b) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.* Y/b) .* sin(Omega*t-beta.*Z);
    Ey = (Omega*mu0/kc^2) * (m*pi/a) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.*Z);
    Hx = -(beta/kc^2) * (m*pi/a) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hy = -(beta/kc^2) * (n*pi/b) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hz = Hm * cos(m*pi.*X/a) .* cos(n*pi.*Y/b) .* cos(Omega*t-beta.*Z);
    Ez = zeros(size(Ex,1),size(Ex,2),size(Ex,3));

    % 绘制电磁场的三维空间分布图
    figure(1)
    hold on
    cla

    % 绘制矩形波导外轮廓线条
    line([0,a,a,0,0],[0,0,0,0,0],[0,0,b,b,0],'color',[0,0,0])
    line([0,a,a,0,0],[0,0,L,L,0],[b,b,b,b,b],'color',[0,0,0])
    line([0,0,0],[0,L,L],[0,0,b],'color',[1,0,1])
    line([0,a],[L,L],[0,0],'color',[1,0,1])
    line([a,a,a,a,a],[0,L,L,0,0],[0,0,b,b,0],'color',[0,0,0])

    % 绘制三维场分布
    quiver3(X(6,:,:),Z(6,:,:),Y(6,:,:),Hx(6,:,:),Hz(6,:,:),Hy(6,:,:),1,'b');
    quiver3(X(6,:,:),Z(6,:,:),Y(6,:,:),Ex(6,:,:),Ez(6,:,:),Ey(6,:,:),0.7,'r');
    quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Hx(:,11,:),Hz(:,11,:),Hy(:,11,:),1,'b');
    quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Ex(:,11,:),Ez(:,11,:),Ey(:,11,:),0.01,'r');
    quiver3(X(:,:,1),Z(:,:,1),Y(:,:,1),Hx(:,:,1),Hz(:,:,1),Hy(:,:,1),1,'b');
    quiver3(X(:,:,1),Z(:,:,1),Y(:,:,1),Ex(:,:,1),Ez(:,:,1),Ey(:,:,1),0.7,'r');

    view(45,45)
    axis equal
    axis([0,a,0,L,0,b])

    xlabel x
    ylabel z
    zlabel y
    title(['矩形波导TE_{',num2str(m),num2str(n),'}模场分布'])

    pause(0.01)
end

矩形波导传播模的三维管壁电流分布仿真

clc
clear
close all
warning off

% 矩形波导传播TE波的三维管壁电流分布仿真

% 参数申明
eps0 = 1e-9 / (36 * pi);                    % 真空中的介电常数
mu0 = 4 * pi * 1e-7;                        % 真空中的磁导率
eps = eps0;                                 % 介质的介电常数
mu = mu0;                                   % 介质的磁导率
a = 22.86;                                  % 矩形波导的宽边长度
a = a * 1e-3;                               % 单位mm
b = 10.16;                                  % 矩形波导的窄边长度
b = b * 1e-3;                               % 单位mm
L = 60;                                     % 矩形波导纵向长度
L = L * 1e-3;                               % 单位mm
f = 9.28;                                   % 电磁波的频率
f = f * 1e9;                                % 单位GHz
t0 = 1;                                     % 仿真时间
m = 1;                                      % 电磁波传播模式
n = 0;                                      % 电磁波传播模式
Hm = 1;                                     % 磁场z分量的振幅
mode = 'TE';

% 变量计算
velocity = 1 / (sqrt(mu0 * eps0));          % 真空中电磁波的传播速度
kc = sqrt((m*pi/a)^2 + (n*pi/b)^2);         % 截止波数
fc = kc*velocity / (2*pi);                  % 截止频率
Omega = 2*pi*f;                             % 电磁波角频率
T = 2*pi/Omega;                             % 电磁波周期
ke = Omega * sqrt(mu*eps);                  % 电磁波波矢
beta = sqrt(ke^2-kc^2);                     % 相位常数

% 空间离散
x = 0:0.1*a:a;
y = 0:0.1*b:b;
z = 0:0.05*L:L;
[X,Y,Z] = meshgrid(x,y,z);
num = 0;

% 开始仿真
for t = 0:0.01*T:t0*T

    % 计算空间各个场
    Hx = (beta/kc^2) * (m*pi/a) * Hm * sin(m*pi.*X/a) .* ...
          cos(n*pi.*Y/b) .* cos(Omega*t-beta.*Z + pi/2);
    Hy = (beta/kc^2) * (n*pi/b) * Hm * cos(m*pi.*X/a) .* ...
          sin(n*pi.*Y/b) .* cos(Omega*t-beta.*Z + pi/2);
    Hz = Hm*cos(m*pi.*X/a) .* cos(n*pi.*Y/b) .* cos(Omega*t-beta.*Z);

    % 管壁电流计算
    Jsx_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsy_x0a = -Hz;
    Jsz_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsx_y0b = Hz;
    Jsz_y0b = -Hx;
    Jsy_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));

    % 绘制电磁场的三维空间分布图
    figure(1)
    hold on
    cla

    % 绘制矩形波导外轮廓线条
    line([0,a,a,0,0],[0,0,0,0,0],[0,0,b,b,0],'color',[0,0,0])
    line([0,a,a,0,0],[0,0,L,L,0],[b,b,b,b,b],'color',[0,0,0])
    line([0,0,0],[0,L,L],[0,0,b],'color',[1,0,1])
    line([0,a],[L,L],[0,0],'color',[1,0,1])
    line([a,a,a,a,a],[0,L,L,0,0],[0,0,b,b,0],'color',[0,0,0])

    % 绘制三维场分布
    quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Jsx_x0a(:,11,:),Jsz_x0a(:,11,:),Jsy_x0a(:,11,:),1,'r')
    quiver3(X(:,1,:),Z(:,1,:),Y(:,1,:),-Jsx_x0a(:,1,:),-Jsz_x0a(:,1,:),-Jsy_x0a(:,1,:),1,'r')
    quiver3(X(11,:,:),Z(11,:,:),Y(11,:,:),Jsx_y0b(11,:,:),Jsz_y0b(11,:,:),Jsy_y0b(11,:,:),1,'b')
    quiver3(X(1,:,:),Z(1,:,:),Y(1,:,:),-Jsx_y0b(1,:,:),-Jsz_y0b(1,:,:),-Jsy_y0b(1,:,:),1,'g')

    view(45,45)
    axis equal
    axis([0,a,0,L,0,b])
    
    xlabel x
    ylabel z
    zlabel yaxis([0,a,0,L,0,b])
    title(['矩形波导TE_{',num2str(m),num2str(n),'}管壁电流分布'])

    pause(0.1)
end

矩形波导传播模的三维场分布仿真

clc
clear
close all
warning off

% 矩形波导传播TM波的三维场分布仿真

% 参数申明
eps0 = 1e-9 / (36 * pi);                    % 真空中的介电常数
mu0 = 4 * pi * 1e-7;                        % 真空中的磁导率
eps = eps0;                                 % 介质的介电常数
mu = mu0;                                   % 介质的磁导率
a = 22.86;                                  % 矩形波导的宽边长度
a = a * 1e-3;                               % 单位mm
b = 10.16;                                  % 矩形波导的窄边长度
b = b * 1e-3;                               % 单位mm
L = 60;                                     % 矩形波导纵向长度
L = L * 1e-3;                               % 单位mm
f = 200;                                    % 电磁波的频率
f = f * 1e9;                                % 单位GHz
t0 = 1;                                     % 仿真时间
m = 1;                                      % 电磁波传播模式
n = 1;                                      % 电磁波传播模式
Hm = 1;                                     % 磁场z分量的振幅
mode = 'TM';

% 变量计算
velocity = 1 / (sqrt(mu0 * eps0));          % 真空中电磁波的传播速度
kc = sqrt((m*pi/a)^2 + (n*pi/b)^2);         % 截止波数
fc = kc*velocity / (2*pi);                  % 截止频率
Omega = 2*pi*f;                             % 电磁波角频率
T = 2*pi/Omega;                             % 电磁波周期
ke = Omega * sqrt(mu*eps);                  % 电磁波波矢
beta = sqrt(ke^2-kc^2);                     % 相位常数

% 判断仿真条件
if f < fc
    error("电磁波频率低于截止频率")
end

% 空间离散
x = 0:0.1*a:a;
y = 0:0.1*b:b;
z = 0:0.05*L:L;
[X,Y,Z] = meshgrid(x,y,z);
num = 0;

% 开始仿真
for t = 0:0.01*T:t0*T

    % 计算空间各个场
    Ex = -(Omega*mu0/kc^2) * (m*pi/a) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.*Y/b) .* sin(Omega*t-beta.*Z);
    Ey = -(Omega*mu0/kc^2) * (n*pi/b) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.*Z);
    Ez = Hm * sin(m*pi.*X/a) .* sin(n*pi.*Y/b) .* cos(Omega*t-beta.*Z);
    Hx = (beta/kc^2) * (n*pi/b) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hy = -(beta/kc^2) * (m*pi/a) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hz = zeros(size(Hx,1),size(Hx,2),size(Hx,3));

    % 绘制电磁场的三维空间分布图
    figure(1)
    hold on
    cla

    % 绘制矩形波导外轮廓线条
    line([0,a,a,0,0],[0,0,0,0,0],[0,0,b,b,0],'color',[0,0,0])
    line([0,a,a,0,0],[0,0,L,L,0],[b,b,b,b,b],'color',[0,0,0])
    line([0,0,0],[0,L,L],[0,0,b],'color',[1,0,1])
    line([0,a],[L,L],[0,0],'color',[1,0,1])
    line([a,a,a,a,a],[0,L,L,0,0],[0,0,b,b,0],'color',[0,0,0])

    % 绘制三维场分布
%     quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Hx(:,11,:),Hz(:,11,:),Hy(:,11,:),1,'b')
%     quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Ex(:,11,:),Ez(:,11,:),Ey(:,11,:),1,'r')
    quiver3(X(:,:,[1:2:20,21]),Z(:,:,[1:2:20,21]),Y(:,:,[1:2:20,21]),Hx(:,:,[1:2:20,21]),Hz(:,:,[1:2:20,21]),Hy(:,:,[1:2:20,21]),1,'b')
    quiver3(X(:,:,[1:2:20,21]),Z(:,:,[1:2:20,21]),Y(:,:,[1:2:20,21]),Ex(:,:,[1:2:20,21]),Ez(:,:,[1:2:20,21]),Ey(:,:,[1:2:20,21]),0.7,'r')
%     quiver3(X(1,:,:),Z(1,:,:),Y(1,:,:),Hx(1,:,:),Hz(1,:,:),Hy(1,:,:),1,'b')
%     quiver3(X(6,:,:),Z(6,:,:),Y(6,:,:),Ex(6,:,:),Ez(6,:,:),Ey(6,:,:),1,'r')

    view(45,45)
    axis equal
    axis([0,a,0,L,0,b])
    xlabel x
    ylabel z
    zlabel y
    title(['矩形波导TM_{',num2str(m),num2str(n),'}模场分布'])

    pause(0.00001)
end

矩形波导传播波的三维管壁电流分布仿真

clc
clear
close all
warning off

% 矩形波导传播TM波的三维管壁电流分布仿真

% 参数申明
eps0 = 1e-9 / (36 * pi);                    % 真空中的介电常数
mu0 = 4 * pi * 1e-7;                        % 真空中的磁导率
eps = eps0;                                 % 介质的介电常数
mu = mu0;                                   % 介质的磁导率
a = 22.86;                                  % 矩形波导的宽边长度
a = a * 1e-3;                               % 单位mm
b = 10.16;                                  % 矩形波导的窄边长度
b = b * 1e-3;                               % 单位mm
L = 60;                                     % 矩形波导纵向长度
L = L * 1e-3;                               % 单位mm
f = 90;                                     % 电磁波的频率
f = f * 1e9;                                % 单位GHz
t0 = 1;                                     % 仿真时间
m = 1;                                      % 电磁波传播模式
n = 1;                                      % 电磁波传播模式
Hm = 1;                                     % 磁场z分量的振幅
mode = 'TE';

% 变量计算
velocity = 1 / (sqrt(mu0 * eps0));          % 真空中电磁波的传播速度
kc = sqrt((m*pi/a)^2 + (n*pi/b)^2);         % 截止波数
fc = kc*velocity / (2*pi);                  % 截止频率
Omega = 2*pi*f;                             % 电磁波角频率
T = 2*pi/Omega;                             % 电磁波周期
ke = Omega * sqrt(mu*eps);                  % 电磁波波矢
beta = sqrt(ke^2-kc^2);                     % 相位常数

% 空间离散
x = 0:0.1*a:a;
y = 0:0.1*b:b;
z = 0:0.05*L:L;
[X,Y,Z] = meshgrid(x,y,z);
num = 0;

% 开始仿真
for t = 0:0.01*T:t0*T

    % 计算空间各个场
    Hx = -(beta/kc^2) * (n*pi/b) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hy = (beta/kc^2) * (m*pi/a) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hz = zeros(size(Hx,1),size(Hx,2),size(Hx,3));

    % 管壁电流计算
    Jsx_x0a = Hx;
    Jsy_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsz_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsx_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsz_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
    Jsy_y0b = Hy;

    % 绘制电磁场的三维空间分布图
    figure(1)
    hold on
    cla

    % 绘制矩形波导外轮廓线条
    line([0,a,a,0,0],[0,0,0,0,0],[0,0,b,b,0],'color',[0,0,0])
    line([0,a,a,0,0],[0,0,L,L,0],[b,b,b,b,b],'color',[0,0,0])
    line([0,0,0],[0,L,L],[0,0,b],'color',[1,0,1])
    line([0,a],[L,L],[0,0],'color',[1,0,1])
    line([a,a,a,a,a],[0,L,L,0,0],[0,0,b,b,0],'color',[0,0,0])

    % 绘制三维场分布
    quiver3(X(1,:,:),Z(1,:,:),Y(1,:,:),Jsx_x0a(1,:,:),Jsy_x0a(1,:,:),Jsz_x0a(1,:,:),1,'b')
    quiver3(X(11,:,:),Z(11,:,:),Y(11,:,:),Jsx_x0a(11,:,:),Jsy_x0a(11,:,:),Jsz_x0a(11,:,:),1,'g')
    quiver3(X(:,1,:),Z(:,1,:),Y(:,1,:),Jsx_y0b(:,1,:),Jsz_y0b(:,1,:),Jsy_y0b(:,1,:),1,'r')
    quiver3(X(:,11,:),Z(:,11,:),Y(:,11,:),Jsx_y0b(:,11,:),Jsz_y0b(:,11,:),Jsy_y0b(:,11,:),1,'r')

    view(45,45)
    axis equal
    axis([0,a,0,L,0,b])
    xlabel x
    ylabel z
    zlabel y
    title(['矩形波导TM_{',num2str(m),num2str(n),'}管壁电流分布'])

    pause(0.1)
end

矩形波导传播波的三维场分布仿真

clc
clear
close all
warning off

% 矩形波导传播TEmn波的三维场分布仿真

% 参数申明
eps0 = 1e-9 / (36 * pi);                    % 真空中的介电常数
mu0 = 4 * pi * 1e-7;                        % 真空中的磁导率
eps = eps0;                                 % 介质的介电常数
mu = mu0;                                   % 介质的磁导率
a = 22.86;                                  % 矩形波导的宽边长度
a = a * 1e-3;                               % 单位mm
b = 10.16;                                  % 矩形波导的窄边长度
b = b * 1e-3;                               % 单位mm
L = 60;                                     % 矩形波导纵向长度
L = L * 1e-3;                               % 单位mm
f = 50;                                     % 电磁波的频率
f = f * 1e9;                                % 单位GHz
t0 = 1;                                     % 仿真时间
m = 1;                                      % 电磁波传播模式
n = 1;                                      % 电磁波传播模式
Hm = 1;                                     % 磁场z分量的振幅
mode = 'TE';

% 变量计算
velocity = 1 / (sqrt(mu0 * eps0));          % 真空中电磁波的传播速度
kc = sqrt((m*pi/a)^2 + (n*pi/b)^2);         % 截止波数
fc = kc*velocity / (2*pi);                  % 截止频率
Omega = 2*pi*f;                             % 电磁波角频率
T = 2*pi/Omega;                             % 电磁波周期
ke = Omega * sqrt(mu*eps);                  % 电磁波波矢
beta = sqrt(ke^2-kc^2);                     % 相位常数

% 判断仿真条件
if f < fc
    error("电磁波频率低于截止频率")
end

% 空间离散
x = 0:0.1*a:a;
y = 0:0.1*b:b;
z = 0:0.05*L:L;
[X,Y,Z] = meshgrid(x,y,z);
num = 0;

% 开始仿真
for t = 0:0.01*T:t0*T

    % 计算空间各个场
    Ex = -(Omega*mu0/kc^2) * (n*pi/b) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.* Y/b) .* sin(Omega*t-beta.*Z);
    Ey = (Omega*mu0/kc^2) * (m*pi/a) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.*Z);
    Hx = -(beta/kc^2) * (m*pi/a) * Hm * sin(m*pi.*X/a) .* ...
        cos(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hy = -(beta/kc^2) * (n*pi/b) * Hm * cos(m*pi.*X/a) .* ...
        sin(n*pi.*Y/b) .* sin(Omega*t-beta.* Z);
    Hz = Hm * cos(m*pi.*X/a) .* cos(n*pi.*Y/b) .* cos(Omega*t-beta.*Z);
    Ez = zeros(size(Ex,1),size(Ex,2),size(Ex,3));

    % 绘制电磁场的三维空间分布图
    figure(1)
    hold on
    cla

    % 绘制矩形波导外轮廓线条
    line([0,a,a,0,0],[0,0,0,0,0],[0,0,b,b,0],'color',[0,0,0])
    line([0,a,a,0,0],[0,0,L,L,0],[b,b,b,b,b],'color',[0,0,0])
    line([0,0,0],[0,L,L],[0,0,b],'color',[1,0,1])
    line([0,a],[L,L],[0,0],'color',[1,0,1])
    line([a,a,a,a,a],[0,L,L,0,0],[0,0,b,b,0],'color',[0,0,0])

    % 绘制三维场分布
    quiver3(X(:,:,[1:2:20,21]),Z(:,:,[1:2:20,21]),Y(:,:,[1:2:20,21]),Hx(:,:,[1:2:20,21]),Hz(:,:,[1:2:20,21]),Hy(:,:,[1:2:20,21]),1,'b')
    quiver3(X(:,:,[1:2:20,21]),Z(:,:,[1:2:20,21]),Y(:,:,[1:2:20,21]),Ex(:,:,[1:2:20,21]),Ez(:,:,[1:2:20,21]),Ey(:,:,[1:2:20,21]),0.7,'r')

    view(45,45)
    axis equal
    axis([0,a,0,L,0,b])
    xlabel x
    ylabel z
    zlabel y
    title(['矩形波导TE_{',num2str(m),num2str(n),'}模场分布'])

    pause(0.01)
end

GUI界面代码

app1.mlapp

classdef app1 < matlab.apps.AppBase

    % Properties that correspond to app components
    properties (Access = public)
        UIFigure         matlab.ui.Figure
        Button_5         matlab.ui.control.Button
        Button_4         matlab.ui.control.Button
        Button_3         matlab.ui.control.Button
        ButtonGroup_2    matlab.ui.container.ButtonGroup
        Button_2         matlab.ui.control.RadioButton
        Button           matlab.ui.control.RadioButton
        Panel_2          matlab.ui.container.Panel
        ButtonGroup      matlab.ui.container.ButtonGroup
        TMButton         matlab.ui.control.RadioButton
        TEButton         matlab.ui.control.RadioButton
        nEditField       matlab.ui.control.NumericEditField
        nEditFieldLabel  matlab.ui.control.Label
        mEditField       matlab.ui.control.NumericEditField
        mEditFieldLabel  matlab.ui.control.Label
        Panel            matlab.ui.container.Panel
        HsLabel          matlab.ui.control.Label
        FsLabel          matlab.ui.control.Label
        TLabel           matlab.ui.control.Label
        GHzLabel         matlab.ui.control.Label
        mmLabel_3        matlab.ui.control.Label
        mmLabel_2        matlab.ui.control.Label
        mmLabel          matlab.ui.control.Label
        EditField_8      matlab.ui.control.NumericEditField
        Label_7          matlab.ui.control.Label
        EditField_6      matlab.ui.control.NumericEditField
        Label_6          matlab.ui.control.Label
        EditField_5      matlab.ui.control.NumericEditField
        Label_5          matlab.ui.control.Label
        EditField_4      matlab.ui.control.NumericEditField
        Label_4          matlab.ui.control.Label
        EditField_3      matlab.ui.control.NumericEditField
        Label_3          matlab.ui.control.Label
        EditField_2      matlab.ui.control.NumericEditField
        Label_2          matlab.ui.control.Label
        EditField        matlab.ui.control.NumericEditField
        Label            matlab.ui.control.Label
        UIAxes           matlab.ui.control.UIAxes
    end

    
    properties (Access = private)
        eps % 介质的介电常数
        mu % 介质的磁导率
        a % 矩形波导宽边长度
        b % 矩形波导窄边长度
        L % 矩形波导纵向长度
        f % 电磁波的频率
        t0 % 仿真时间
        m % 电磁波传播模式
        n % 电磁波传播模式
        mode % 电磁波传播模式
        fun % 绘图功能
        velocity % 真空中电磁波的传播速度
        kc % 截止波数
        fc % 截止频率
        Omega % 电磁波角频率
        T % 电磁波周期
        ke % 电磁波波矢
        beta % 相位常数
        eps0 = 1e-9 / (36 * pi); % 真空中的介电常数
        mu0 = 4 * pi * 1e-7; % 真空中的磁导率
        Hm = 1; % 磁场z分量的振幅
    end
    
    properties (Access = public)
        X % x方向离散向量
        Y % y方向离散向量
        Z % z方向离散向量
    end
    

    % Callbacks that handle component events
    methods (Access = private)

        % Code that executes after component creation
        function startupFcn(app)
            
            % app回调函数
            
            % 获值
            EditFieldValueChanged(app)
            EditField_2ValueChanged(app)
            EditField_3ValueChanged(app)
            EditField_4ValueChanged(app)
            EditField_5ValueChanged(app)
            EditField_6ValueChanged(app)
            EditField_8ValueChanged(app)
            mEditFieldValueChanged(app)
            nEditFieldValueChanged(app)
            ButtonGroupSelectionChanged(app)
            ButtonGroup_2SelectionChanged(app)


            % 绘制矩形波导
            line(app.UIAxes,[0,app.a,app.a,0,0],[0,0,0,0,0],[0,0,app.b,app.b,0],'color',[0,0,0])
            line(app.UIAxes,[0,app.a,app.a,0,0],[0,0,app.L,app.L,0],[app.b,app.b,app.b,app.b,app.b],'color',[0,0,0])
            line(app.UIAxes,[0,0,0],[0,app.L,app.L],[0,0,app.b],'color',[1,0,1])
            line(app.UIAxes,[0,app.a],[app.L,app.L],[0,0],'color',[1,0,1])
            line(app.UIAxes,[app.a,app.a,app.a,app.a,app.a],[0,app.L,app.L,0,0],[0,0,app.b,app.b,0],'color',[0,0,0])
            axis(app.UIAxes,[0,app.a,0,app.L,0,app.b])
            axis(app.UIAxes,"equal")
            view(app.UIAxes,45,45)
        end

        % Value changed function: EditField
        function EditFieldValueChanged(app, event)
            
            % 介电常数输入回调函数
            app.eps = app.EditField.Value;
        end

        % Value changed function: EditField_2
        function EditField_2ValueChanged(app, event)
            
            % 磁导率输入回调函数
            app.mu = app.EditField_2.Value;
        end

        % Value changed function: EditField_3
        function EditField_3ValueChanged(app, event)
            
            % 矩形波导宽边长度输入回调函数
            app.a = app.EditField_3.Value * 1e-3;
        end

        % Value changed function: EditField_4
        function EditField_4ValueChanged(app, event)
            
            % 矩形波导窄边长度输入回调函数
            app.b = app.EditField_4.Value * 1e-3;
        end

        % Value changed function: EditField_5
        function EditField_5ValueChanged(app, event)
            
            % 矩形波导纵向长度输入回调函数
            app.L = app.EditField_5.Value * 1e-3;
        end

        % Value changed function: EditField_6
        function EditField_6ValueChanged(app, event)
            
            % 电磁波频率输入回调函数
            app.f = app.EditField_6.Value * 1e9;
        end

        % Value changed function: EditField_8
        function EditField_8ValueChanged(app, event)
            
            % 仿真时间输入回调函数
            app.t0 = app.EditField_8.Value;
        end

        % Value changed function: mEditField
        function mEditFieldValueChanged(app, event)
            
            % 电磁波传播模式m输入回调函数
            app.m = app.mEditField.Value;
        end

        % Value changed function: nEditField
        function nEditFieldValueChanged(app, event)
            
            % 电磁波传播模式n输入回调函数
            app.n = app.nEditField.Value;
        end

        % Selection changed function: ButtonGroup
        function ButtonGroupSelectionChanged(app, event)
            
            % 电磁波传播模式选择回调函数
            app.mode = app.ButtonGroup.SelectedObject;
        end

        % Selection changed function: ButtonGroup_2
        function ButtonGroup_2SelectionChanged(app, event)
            
            % 绘图功能选择回调函数
            app.fun = app.ButtonGroup_2.SelectedObject;
        end

        % Button pushed function: Button_3
        function Button_3Pushed(app, event)
            
            % 切换电场分布App
            app2(app.eps, app.mu, app.a, app.b, app.L, app.f, app.t0, app.m, app.n, app.mode)
            delete(app)
        end

        % Button pushed function: Button_4
        function Button_4Pushed(app, event)
            
            % 切换磁场分布App
            app3(app.eps, app.mu, app.a, app.b, app.L, app.f, app.t0, app.m, app.n, app.mode)
            delete(app)
        end

        % Button pushed function: Button_5
        function Button_5Pushed(app, event)
            
            % 开始仿真

            % 变量计算
            app.velocity = 1 / (sqrt(app.mu0 * app.eps0));
            app.kc = sqrt((app.m*pi/app.a)^2 + (app.n*pi/app.b)^2);
            app.fc = app.kc*app.velocity / (2*pi);
            app.Omega = 2*pi*app.f;
            app.T = 2*pi/app.Omega;
            app.ke = app.Omega * sqrt(app.mu*app.eps);
            app.beta = sqrt(app.ke^2-app.kc^2);

            % 错误警告
            if app.f < app.fc
                app4("电磁波频率低于截止频率")
            elseif app.mode.Text == "TM" && app.m == 0 && app.n == 0
                app4("不存在TM00模式")
            elseif app.mode.Text == "TM" && app.m == 0
                app4(['不存在TM0',num2str(app.n),'模式'])
            elseif app.mode.Text == "TM" && app.n == 0
                app4(['不存在TM',num2str(app.m),'0模式'])
            elseif app.mode.Text == "TE" && app.m == 0 && app.n == 0
                app4("不存在TE00模式")
            else

                % 空间离散
                x = 0:0.1*app.a:app.a;
                y = 0:0.1*app.b:app.b;
                z = 0:0.05*app.L:app.L;
                [app.X,app.Y,app.Z] = meshgrid(x,y,z);
    
                % 绘图
                UIAxesButtonDown(app)
            end
        end

        % Button down function: UIAxes
        function UIAxesButtonDown(app, event)

            % 开始仿真
            for t = 0:0.01*app.T:app.t0*app.T
            
                % 计算空间各个场
                if app.mode.Text == "TE"
                    Ex = -(app.Omega*app.mu/app.kc^2) * (app.n*pi/app.b) * app.Hm * ...
                        cos(app.m*pi.*app.X/app.a) .* ...
                        sin(app.n*pi.* app.Y/app.b) .* sin(app.Omega*t-app.beta.*app.Z);
                    Ey = (app.Omega*app.mu/app.kc^2) * (app.m*pi/app.a) * app.Hm * ...
                        sin(app.m*pi.*app.X/app.a) .* ...
                        cos(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.*app.Z);
                    Hx = -(app.beta/app.kc^2) * (app.m*pi/app.a) * app.Hm * ...
                        sin(app.m*pi.*app.X/app.a) .* ...
                        cos(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.* app.Z);
                    Hy = -(app.beta/app.kc^2) * (app.n*pi/app.b) * app.Hm * ...
                        cos(app.m*pi.*app.X/app.a) .* ...
                        sin(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.* app.Z);
                    Hz = app.Hm * cos(app.m*pi.*app.X/app.a) .* ...
                        cos(app.n*pi.*app.Y/app.b) .* cos(app.Omega*t-app.beta.*app.Z);
                    Ez = zeros(size(Ex,1),size(Ex,2),size(Ex,3));
                elseif app.mode.Text == "TM"
                    Ex = -(app.Omega*app.mu0/app.kc^2) * (app.m*pi/app.a) * app.Hm * ...
                        cos(app.m*pi.*app.X/app.a) .* ...
                        sin(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.*app.Z);
                    Ey = -(app.Omega*app.mu0/app.kc^2) * (app.n*pi/app.b) * app.Hm * ...
                        sin(app.m*pi.*app.X/app.a) .* ...
                        cos(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.*app.Z);
                    Ez = app.Hm * sin(app.m*pi.*app.X/app.a) .* ...
                        sin(app.n*pi.*app.Y/app.b) .* cos(app.Omega*t-app.beta.*app.Z);
                    Hx = (app.beta/app.kc^2) * (app.n*pi/app.b) * app.Hm * ...
                        sin(app.m*pi.*app.X/app.a) .* ...
                        cos(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.* app.Z);
                    Hy = -(app.beta/app.kc^2) * (app.m*pi/app.a) * app.Hm * ...
                        cos(app.m*pi.*app.X/app.a) .* ...
                        sin(app.n*pi.*app.Y/app.b) .* sin(app.Omega*t-app.beta.* app.Z);
                    Hz = zeros(size(Hx,1),size(Hx,2),size(Hx,3));
                end
                
                if app.fun.Text == "管壁电流分布" && app.mode.Text == "TE"
                    Jsx_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsy_x0a = -Hz;
                    Jsz_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsx_y0b = Hz;
                    Jsz_y0b = -Hx;
                    Jsy_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                elseif app.fun.Text == "管壁电流分布" && app.mode.Text == "TM"
                    Jsx_x0a = Hx;
                    Jsy_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsz_x0a = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsx_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsz_y0b = zeros(size(Hz,1),size(Hz,2),size(Hz,3));
                    Jsy_y0b = Hy;
                end

                % 绘图
                hold(app.UIAxes,'on')
                cla(app.UIAxes)
            
                % 绘制电磁场的三维空间分布图
            
                % 绘制矩形波导外轮廓线条
                line(app.UIAxes,[0,app.a,app.a,0,0],[0,0,0,0,0],[0,0,app.b,app.b,0],'color',[0,0,0])
                line(app.UIAxes,[0,app.a,app.a,0,0],[0,0,app.L,app.L,0],[app.b,app.b,app.b,app.b,app.b],'color',[0,0,0])
                line(app.UIAxes,[0,0,0],[0,app.L,app.L],[0,0,app.b],'color',[1,0,1])
                line(app.UIAxes,[0,app.a],[app.L,app.L],[0,0],'color',[1,0,1])
                line(app.UIAxes,[app.a,app.a,app.a,app.a,app.a],[0,app.L,app.L,0,0],[0,0,app.b,app.b,0],'color',[0,0,0])
            
                % 绘制三维场分布或管壁电流分布
                if (app.mode.Text == "TE" && app.fun.Text == "场分布" && app.m ~= 0 && app.n == 0) || (app.mode.Text == "TE" && app.fun.Text == "场分布" && app.m == 0 && app.n ~= 0)
                    quiver3(app.UIAxes,app.X(6,:,:),app.Z(6,:,:),app.Y(6,:,:),Hx(6,:,:),Hz(6,:,:),Hy(6,:,:),1,'b');
                    quiver3(app.UIAxes,app.X(6,:,:),app.Z(6,:,:),app.Y(6,:,:),Ex(6,:,:),Ez(6,:,:),Ey(6,:,:),0.7,'r');
                    quiver3(app.UIAxes,app.X(:,11,:),app.Z(:,11,:),app.Y(:,11,:),Hx(:,11,:),Hz(:,11,:),Hy(:,11,:),1,'b');
                    quiver3(app.UIAxes,app.X(:,11,:),app.Z(:,11,:),app.Y(:,11,:),Ex(:,11,:),Ez(:,11,:),Ey(:,11,:),0.01,'r');
                    quiver3(app.UIAxes,app.X(:,:,1),app.Z(:,:,1),app.Y(:,:,1),Hx(:,:,1),Hz(:,:,1),Hy(:,:,1),1,'b');
                    quiver3(app.UIAxes,app.X(:,:,1),app.Z(:,:,1),app.Y(:,:,1),Ex(:,:,1),Ez(:,:,1),Ey(:,:,1),0.7,'r');
                    title(app.UIAxes,"矩形波导场分布")
                elseif app.mode.Text == "TE" && app.fun.Text == "场分布" && app.m ~= 0 && app.n ~= 0
                    quiver3(app.UIAxes,app.X(:,:,[1:2:20,21]),app.Z(:,:,[1:2:20,21]),app.Y(:,:,[1:2:20,21]),Hx(:,:,[1:2:20,21]),Hz(:,:,[1:2:20,21]),Hy(:,:,[1:2:20,21]),1,'b')
                    quiver3(app.UIAxes,app.X(:,:,[1:2:20,21]),app.Z(:,:,[1:2:20,21]),app.Y(:,:,[1:2:20,21]),Ex(:,:,[1:2:20,21]),Ez(:,:,[1:2:20,21]),Ey(:,:,[1:2:20,21]),0.7,'r')
                    title(app.UIAxes,"矩形波导场分布")
                elseif app.mode.Text == "TM" && app.fun.Text == "场分布"
                    quiver3(app.UIAxes,app.X(:,:,[1:2:20,21]),app.Z(:,:,[1:2:20,21]),app.Y(:,:,[1:2:20,21]),Hx(:,:,[1:2:20,21]),Hz(:,:,[1:2:20,21]),Hy(:,:,[1:2:20,21]),1,'b')
                    quiver3(app.UIAxes,app.X(:,:,[1:2:20,21]),app.Z(:,:,[1:2:20,21]),app.Y(:,:,[1:2:20,21]),Ex(:,:,[1:2:20,21]),Ez(:,:,[1:2:20,21]),Ey(:,:,[1:2:20,21]),0.7,'r')
                    title(app.UIAxes,"矩形波导场分布")
                elseif app.mode.Text == "TM" && app.fun.Text == "管壁电流分布"
                    quiver3(app.UIAxes,app.X(1,:,:),app.Z(1,:,:),app.Y(1,:,:),Jsx_x0a(1,:,:),Jsy_x0a(1,:,:),Jsz_x0a(1,:,:),1,'b')
                    quiver3(app.UIAxes,app.X(11,:,:),app.Z(11,:,:),app.Y(11,:,:),Jsx_x0a(11,:,:),Jsy_x0a(11,:,:),Jsz_x0a(11,:,:),1,'g')
                    quiver3(app.UIAxes,app.X(:,1,:),app.Z(:,1,:),app.Y(:,1,:),Jsx_y0b(:,1,:),Jsz_y0b(:,1,:),Jsy_y0b(:,1,:),1,'r')
                    quiver3(app.UIAxes,app.X(:,11,:),app.Z(:,11,:),app.Y(:,11,:),Jsx_y0b(:,11,:),Jsz_y0b(:,11,:),Jsy_y0b(:,11,:),1,'r')
                    title(app.UIAxes,"矩形波导管壁电流分布")
                elseif app.mode.Text == "TE" && app.fun.Text == "管壁电流分布"
                    quiver3(app.UIAxes,app.X(:,11,:),app.Z(:,11,:),app.Y(:,11,:),Jsx_x0a(:,11,:),Jsz_x0a(:,11,:),Jsy_x0a(:,11,:),1,'r')
                    quiver3(app.UIAxes,app.X(:,1,:),app.Z(:,1,:),app.Y(:,1,:),-Jsx_x0a(:,1,:),-Jsz_x0a(:,1,:),-Jsy_x0a(:,1,:),1,'r')
                    quiver3(app.UIAxes,app.X(11,:,:),app.Z(11,:,:),app.Y(11,:,:),Jsx_y0b(11,:,:),Jsz_y0b(11,:,:),Jsy_y0b(11,:,:),1,'b')
                    quiver3(app.UIAxes,app.X(1,:,:),app.Z(1,:,:),app.Y(1,:,:),-Jsx_y0b(1,:,:),-Jsz_y0b(1,:,:),-Jsy_y0b(1,:,:),1,'g')
                    title(app.UIAxes,"矩形波导管壁电流分布")
                end
            
                view(app.UIAxes,45,45)
                axis(app.UIAxes,"equal")
                axis(app.UIAxes,[0,app.a,0,app.L,0,app.b])
                pause(0.01)
            end
        end
    end

    % Component initialization
    methods (Access = private)

        % Create UIFigure and components
        function createComponents(app)

            % Create UIFigure and hide until all components are created
            app.UIFigure = uifigure('Visible', 'off');
            app.UIFigure.Position = [100 100 722 587];
            app.UIFigure.Name = 'MATLAB App';

            % Create UIAxes
            app.UIAxes = uiaxes(app.UIFigure);
            title(app.UIAxes, '矩形波导场分布')
            xlabel(app.UIAxes, 'X')
            ylabel(app.UIAxes, 'Y')
            zlabel(app.UIAxes, 'Z')
            app.UIAxes.ButtonDownFcn = createCallbackFcn(app, @UIAxesButtonDown, true);
            app.UIAxes.Position = [19 233 692 337];

            % Create Panel
            app.Panel = uipanel(app.UIFigure);
            app.Panel.TitlePosition = 'centertop';
            app.Panel.Title = '仿真参数选择';
            app.Panel.Position = [58 10 294 210];

            % Create Label
            app.Label = uilabel(app.Panel);
            app.Label.HorizontalAlignment = 'right';
            app.Label.Position = [29 154 89 22];
            app.Label.Text = '介质的介电常数';

            % Create EditField
            app.EditField = uieditfield(app.Panel, 'numeric');
            app.EditField.ValueChangedFcn = createCallbackFcn(app, @EditFieldValueChanged, true);
            app.EditField.Position = [133 152 80 25];
            app.EditField.Value = 8.8419e-12;

            % Create Label_2
            app.Label_2 = uilabel(app.Panel);
            app.Label_2.HorizontalAlignment = 'right';
            app.Label_2.Position = [41 130 77 22];
            app.Label_2.Text = '介质的磁导率';

            % Create EditField_2
            app.EditField_2 = uieditfield(app.Panel, 'numeric');
            app.EditField_2.ValueChangedFcn = createCallbackFcn(app, @EditField_2ValueChanged, true);
            app.EditField_2.Position = [133 128 80 25];
            app.EditField_2.Value = 1.2566e-06;

            % Create Label_3
            app.Label_3 = uilabel(app.Panel);
            app.Label_3.HorizontalAlignment = 'right';
            app.Label_3.Position = [5 106 113 22];
            app.Label_3.Text = '矩形波导的宽边长度';

            % Create EditField_3
            app.EditField_3 = uieditfield(app.Panel, 'numeric');
            app.EditField_3.ValueChangedFcn = createCallbackFcn(app, @EditField_3ValueChanged, true);
            app.EditField_3.Position = [133 104 80 25];
            app.EditField_3.Value = 22.86;

            % Create Label_4
            app.Label_4 = uilabel(app.Panel);
            app.Label_4.HorizontalAlignment = 'right';
            app.Label_4.Position = [5 82 113 22];
            app.Label_4.Text = '矩形波导的窄边长度';

            % Create EditField_4
            app.EditField_4 = uieditfield(app.Panel, 'numeric');
            app.EditField_4.ValueChangedFcn = createCallbackFcn(app, @EditField_4ValueChanged, true);
            app.EditField_4.Position = [133 80 80 25];
            app.EditField_4.Value = 10.16;

            % Create Label_5
            app.Label_5 = uilabel(app.Panel);
            app.Label_5.HorizontalAlignment = 'right';
            app.Label_5.Position = [17 58 101 22];
            app.Label_5.Text = '矩形波导纵向长度';

            % Create EditField_5
            app.EditField_5 = uieditfield(app.Panel, 'numeric');
            app.EditField_5.ValueChangedFcn = createCallbackFcn(app, @EditField_5ValueChanged, true);
            app.EditField_5.Position = [133 56 80 25];
            app.EditField_5.Value = 60;

            % Create Label_6
            app.Label_6 = uilabel(app.Panel);
            app.Label_6.HorizontalAlignment = 'right';
            app.Label_6.Position = [41 34 77 22];
            app.Label_6.Text = '电磁波的频率';

            % Create EditField_6
            app.EditField_6 = uieditfield(app.Panel, 'numeric');
            app.EditField_6.ValueChangedFcn = createCallbackFcn(app, @EditField_6ValueChanged, true);
            app.EditField_6.Position = [133 32 80 25];
            app.EditField_6.Value = 9.38;

            % Create Label_7
            app.Label_7 = uilabel(app.Panel);
            app.Label_7.HorizontalAlignment = 'right';
            app.Label_7.Position = [65 10 53 22];
            app.Label_7.Text = '仿真时间';

            % Create EditField_8
            app.EditField_8 = uieditfield(app.Panel, 'numeric');
            app.EditField_8.ValueChangedFcn = createCallbackFcn(app, @EditField_8ValueChanged, true);
            app.EditField_8.Position = [133 8 80 25];
            app.EditField_8.Value = 1;

            % Create mmLabel
            app.mmLabel = uilabel(app.Panel);
            app.mmLabel.Position = [224 106 25 22];
            app.mmLabel.Text = 'mm';

            % Create mmLabel_2
            app.mmLabel_2 = uilabel(app.Panel);
            app.mmLabel_2.Position = [224 81 25 22];
            app.mmLabel_2.Text = 'mm';

            % Create mmLabel_3
            app.mmLabel_3 = uilabel(app.Panel);
            app.mmLabel_3.Position = [224 57 25 22];
            app.mmLabel_3.Text = 'mm';

            % Create GHzLabel
            app.GHzLabel = uilabel(app.Panel);
            app.GHzLabel.Position = [224 34 29 22];
            app.GHzLabel.Text = 'GHz';

            % Create TLabel
            app.TLabel = uilabel(app.Panel);
            app.TLabel.Position = [224 9 25 22];
            app.TLabel.Text = 'T';

            % Create FsLabel
            app.FsLabel = uilabel(app.Panel);
            app.FsLabel.Position = [224 154 25 22];
            app.FsLabel.Text = 'F/s';

            % Create HsLabel
            app.HsLabel = uilabel(app.Panel);
            app.HsLabel.Position = [224 127 25 22];
            app.HsLabel.Text = 'H/s';

            % Create Panel_2
            app.Panel_2 = uipanel(app.UIFigure);
            app.Panel_2.TitlePosition = 'centertop';
            app.Panel_2.Title = '波导模式选择';
            app.Panel_2.Position = [393 129 284 91];

            % Create mEditFieldLabel
            app.mEditFieldLabel = uilabel(app.Panel_2);
            app.mEditFieldLabel.HorizontalAlignment = 'right';
            app.mEditFieldLabel.Position = [10 36 25 22];
            app.mEditFieldLabel.Text = 'm';

            % Create mEditField
            app.mEditField = uieditfield(app.Panel_2, 'numeric');
            app.mEditField.ValueChangedFcn = createCallbackFcn(app, @mEditFieldValueChanged, true);
            app.mEditField.Position = [50 34 80 25];
            app.mEditField.Value = 1;

            % Create nEditFieldLabel
            app.nEditFieldLabel = uilabel(app.Panel_2);
            app.nEditFieldLabel.HorizontalAlignment = 'right';
            app.nEditFieldLabel.Position = [10 11 25 22];
            app.nEditFieldLabel.Text = 'n';

            % Create nEditField
            app.nEditField = uieditfield(app.Panel_2, 'numeric');
            app.nEditField.ValueChangedFcn = createCallbackFcn(app, @nEditFieldValueChanged, true);
            app.nEditField.Position = [50 9 80 25];

            % Create ButtonGroup
            app.ButtonGroup = uibuttongroup(app.Panel_2);
            app.ButtonGroup.SelectionChangedFcn = createCallbackFcn(app, @ButtonGroupSelectionChanged, true);
            app.ButtonGroup.Position = [164 11 100 48];

            % Create TEButton
            app.TEButton = uiradiobutton(app.ButtonGroup);
            app.TEButton.Text = 'TE';
            app.TEButton.Position = [11 27 58 22];
            app.TEButton.Value = true;

            % Create TMButton
            app.TMButton = uiradiobutton(app.ButtonGroup);
            app.TMButton.Text = 'TM';
            app.TMButton.Position = [11 5 65 22];

            % Create ButtonGroup_2
            app.ButtonGroup_2 = uibuttongroup(app.UIFigure);
            app.ButtonGroup_2.SelectionChangedFcn = createCallbackFcn(app, @ButtonGroup_2SelectionChanged, true);
            app.ButtonGroup_2.Title = '功能选择';
            app.ButtonGroup_2.Position = [393 10 122 104];

            % Create Button
            app.Button = uiradiobutton(app.ButtonGroup_2);
            app.Button.Text = '场分布';
            app.Button.Position = [11 58 58 22];
            app.Button.Value = true;

            % Create Button_2
            app.Button_2 = uiradiobutton(app.ButtonGroup_2);
            app.Button_2.Text = '管壁电流分布';
            app.Button_2.Position = [11 36 94 22];

            % Create Button_3
            app.Button_3 = uibutton(app.UIFigure, 'push');
            app.Button_3.ButtonPushedFcn = createCallbackFcn(app, @Button_3Pushed, true);
            app.Button_3.Position = [525 83 99 30];
            app.Button_3.Text = '电场分布平面图';

            % Create Button_4
            app.Button_4 = uibutton(app.UIFigure, 'push');
            app.Button_4.ButtonPushedFcn = createCallbackFcn(app, @Button_4Pushed, true);
            app.Button_4.Position = [525 42 99 30];
            app.Button_4.Text = '磁场分布平面图';

            % Create Button_5
            app.Button_5 = uibutton(app.UIFigure, 'push');
            app.Button_5.ButtonPushedFcn = createCallbackFcn(app, @Button_5Pushed, true);
            app.Button_5.Position = [632 83 79 30];
            app.Button_5.Text = '开始仿真';

            % Show the figure after all components are created
            app.UIFigure.Visible = 'on';
        end
    end

    % App creation and deletion
    methods (Access = public)

        % Construct app
        function app = app1

            % Create UIFigure and components
            createComponents(app)

            % Register the app with App Designer
            registerApp(app, app.UIFigure)

            % Execute the startup function
            runStartupFcn(app, @startupFcn)

            if nargout == 0
                clear app
            end
        end

        % Code that executes before app deletion
        function delete(app)

            % Delete UIFigure when app is deleted
            delete(app.UIFigure)
        end
    end
end

四、仿真结果

模的场分布与管壁电流分布仿真结果


模的场分布与管壁电流分布仿真结果


模的场分布仿真结果


模的场分布仿真结果


管壁电流仿真结果


模的场分布与管壁电流分布仿真结果


模的场分布仿真结果

五、参考文献

[1] 余建立,刘双兵.矩形波导TE10模场分布可视化教学研究[J].电气电子教学学报,2017,39(04):145-150.

  • 18
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值