一、矩形波导
矩形波导不能传播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.