✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
⛄ 内容介绍
针对"电磁场与电磁波"课程教学中电磁波传播的教学难点,提出利用MATLAB实现圆柱形永磁体的磁场情况的仿真模拟,得到空间各点电场和磁场矢量随时间的变化规律.通过MATLAB可以实现圆柱形永磁体的实时图形,可以将难理解的知识和现象生动,形象地呈现出来,便于理解理论知识,起到良好的教学效果.
⛄ 部分代码
%% Ring magnetic field visualization
% This script is a DEMO for the visualization of the magnetic flux density
% field lines of an axially magnetized ring.
clc
clear all %#ok<CLALL>
close all
%%
MagPos = [0 0 0 0 0 1];
M = 1.2706/(4*pi*1e-7); % Magnetization [A/m]
L = 0.006;
Rin = 0.002;
Rout = 0.006;
spaceRegion = -0.1:0.001:0.1;
x = spaceRegion; z = x;
Npoints = length(x);
k = 1;
Brho = zeros(Npoints,Npoints); Baxial = Brho; B = Brho;
for i = 1:Npoints
for j = 1:Npoints
Point = [x(j) 0 z(i)];
[Bx, By, Bz] = WrapRingBfield3(Rin,Rout,L,M,MagPos',Point');
Brho(i,j) = Bx;
Baxial(i,j) = Bz;
B(i,j) = sqrt(Bx^2+Bz^2);
end
end
%% planar field lines
D = Rout*2;
figure(1)
subplot(121)
plot_field = streamslice(x,z,Brho,Baxial,'method','cubic');
set(plot_field,'Color','black','LineWidth',1.2);
hold on
rectangle('Position',[0-D/2,0-L/2,D,L],'FaceColor',[0.2 0.2 0.2],...
'EdgeColor',[0 0 0],'LineWidth',1)
hold on
rectangle('Position',[0-D/2,0-L/2,D,L/2],'FaceColor',[0 0 1])
hold on
rectangle('Position',[0-D/2,0,D,L/2],'FaceColor',[1 0 0])
subplot(122)
plot_field = streamslice(x,z,Brho,Baxial,'method','cubic');
set(plot_field,'Color','black','LineWidth',1.2);
hold on
rectangle('Position',[0-D/2,0-L/2,D,L/2],'FaceColor',[0 0 1])
hold on
rectangle('Position',[0-D/2,0,D,L/2],'FaceColor',[1 0 0])
axis([-0.04 0.04 -0.04 0.04])
%% Contour lines (logscale)
[xx,zz] = meshgrid(x);
step = 15;
figure(2)
contourf(xx,zz,log10(B),1000,'EdgeColor','none')
colormap(jet)
colorbar
hold on
h = streamline(xx,zz,Brho,Baxial,...
xx(1:step:end,1:step:end),zz(1:step:end,1:step:end));
rectangle('Position',[0-D/2,0-L/2,D,L/2],'FaceColor',[0 0 1])
rectangle('Position',[0-D/2,0,D,L/2],'FaceColor',[1 0 0])
set(h,'Color','red');
% axis([-0.05 0.05 -0.05 0.05])
title('\textbf{Ring Magnet Model Field Lines}','interpreter','latex',...
'fontsize',14)
xlabel('x [m]','interpreter','latex')
ylabel('z [m]','interpreter','latex')
⛄ 运行结果
⛄ 参考文献
[1]郑颖, 徐晓梅. 基于MATLAB的带电粒子在电磁场中的运动模拟[J]. 物理通报, 2017(1):6.
[2]肖汉光, 丁朝远, 王颖. 电磁波传播的MATLAB仿真教学实践[J]. 吉林教育, 2017(38):1.