电磁波简单一维FDTD的MATLAB实现

简单一维FDTD的MATLAB实现


第一次写博客,发表自己的学习成果,如有不对之处,希望各位评论指出。
内容如题,公式为直角坐标系中FDTD一维公式。

代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%标题:一维FDTD MATLAB模拟
%版本:MATLAB R2018b Update4 
%时间:2019.7.3 13:47:30
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Z向TEM波
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
kzmax=200;                                    %模拟空间长度
tmax=200;                                     %模拟时间长度
ex=zeros(200,200);                            %声明电场,电场矢量为x向
hy=zeros(200,200);                            %声明磁场,磁场矢量为y向
epsz=8.854187817e-12;                         %真空介电常数
muz=(4*pi)*10^(-7);                           %真空磁导率
for t=2:tmax-1                                %时间步进
    ex(1,t)=exp(-(t-1-30)*(t-1-30)/(100));    %高斯脉冲函数在z为1处
    for kz=1:kzmax-1                          %z轴磁场步进
        hy(kz,t)=hy(kz,t-1)-1/(muz*3e8)*(ex(kz+1,t)-ex(kz,t));
    end
    for kz=2:kzmax                            %z轴电场步进
        ex(kz,t+1)=ex(kz,t)-1/(epsz*3e8)*(hy(kz,t)-hy(kz-1,t));
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%电场时域图
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
for i=1:200
    plot(1:200,ex(i,:))
    axis([1,200,0,1])
    pause(0.01)
end
xlabel('时间/t')
ylabel('电场幅度/E')
title('位置z=1-200')

在这里插入图片描述

一点疑问

在学习FDTD和PML后,以及这次模拟后,我发现我没用PML,我还是搞不懂为啥很多模拟要加PML,无论对三维、二维还是一维,指定一块区域后根本不用加PML层就可以模拟,而且也没有感觉到有什么干扰,完全可以当作无限大空间内的一块有限的空间模拟。期望接下来的学习可以解答……

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值