基础
偏振光波包括线偏振、圆偏振、椭圆偏振几个方向,其中线偏振的电场公式为:
两个线偏振可以合成圆偏振和椭圆偏振,其区别在于相位和幅度。
将公式做变形处理,取实部:
代码
u0 = 4*pi*1e-7; %自由空间中的磁导率
e0 = 1e-9/(36*pi); %自由空间中的电介质常数
f = 3*1e8; %电磁波的频率,单位Hz
w = 2*pi*f;
k = w*(u0*e0)^0.5; %计算波数
pha=pi/2; %相位差
z=0:0.01:5; %假设传播方向沿+z正方向
i=1;
fmat=moviein(10000); %建立一个10000帧的动画
for t=0:0.05:2
Ex=cos(2*pi*t-k*z); %计算x方向上t时刻,z平面的电场振幅
Ey=cos(2*pi*t-k*z+pha); %计算y方向上t时刻,z平面的电场振幅,
h=figure;set(h,'Visible','off');%设置不弹窗,避免和movie重复了
plot3(Ex,Ey,z); %画3维图
xlabel('Ex') %x,y,z坐标名
ylabel('Ey')
zlabel('Z')
title('圆极化波传播','fontsize',14)
%图像命名
hold on
grid on %格点
hold on
quiver3(0,0,0,Ex(1),Ey(1),z(1)); %矢量箭头
hold off
fmat(:,i)=getframe; %抓取图像放入fmat
i=i+1;
end
h=figure(1);
set(h,'Visible','on');
movie(fmat,1,7); %将fmat以每秒7帧的速度播放一遍
此处建立的是动画,有许多不足的地方,例如:
fmat=moviein(10000); %建立一个10000帧的动画
提前开辟一个足够大的空间不如一边生成图片一边开辟
所以稍加改动重新设计了一个生成gif的程序
u0 = 4*pi*1e-7; %自由空间中的磁导率
e0 = 1e-9/(36*pi); %自由空间中的电介质常数
f = 3*1e8; %电磁波的频率,单位Hz
w = 2*pi*f;
k = w*(u0*e0)^0.5; %计算波数
pha=1.2; %相位差
z=0:0.01:5; %假设传播方向沿+z正方向
%i=1;
pic_num=1; %帧数
for t=0:0.05:5
Ex=cos(2*pi*t-k*z); %计算x方向上t时刻,z平面的电场振幅
Ey=2*cos(2*pi*t-k*z+pha); %计算y方向上t时刻,z平面的电场振幅,
plot3(Ex,Ey,z); %画3维图
xlabel('Ex') %x,y,z坐标名
ylabel('Ey')
zlabel('Z')
title('圆极化波传播','fontsize',14) %图像命名
hold on
grid on %格点
hold on
quiver3(0,0,0,Ex(1),Ey(1),z(1)); %矢量箭头
hold off
F=getframe; %抓取当前图像
I=frame2im(F);
[I,map]=rgb2ind(I,256);%因gif不支持三维数据,所以应调用 rgb2ind,将rgb图像转为关联256种色彩的索引图像
if t==0
imwrite(I,map,'test.gif','gif'); %创建一个.gif文件,将索引图像数组和其关联的颜色图写入
else
imwrite(I,map,'test.gif','gif','WriteMode','append','DelayTime',0.01);%将多个图像并入第一个,帧间加入0.01s的延时
end
pic_num=pic_num+1;
end
pic_num是gif的帧数,每保存一次图片pic_num+1
来源:CSDN
作者:qq_43208092
链接:https://blog.csdn.net/qq_43208092/article/details/104080364