matlab 画偏振态,MATLAB:绘制三维偏振光动画
MATLAB:绘制三维偏振光动画
基础
代码
基础
偏振光波包括线偏振、圆偏振、椭圆偏振几个方向,其中线偏振的电场公式为:
E⃗1=e⃗1E1ei(k⃗⋅r⃗−wt)\vec E_1=\vec e_1E_1e^{i(\vec k\cdot \vec r-wt)}E1=e1E1ei(k⋅r−wt)
两个线偏振可以合成圆偏振和椭圆偏振,其区别在于相位和幅度。
将公式做变形处理,取实部:
E⃗1=e⃗1E10cos(k⃗⋅r⃗−wt+φ1)\vec E_1=\vec e_1E_{10}cos(\vec k\cdot \vec r-wt+\varphi_1)E1=e1E10cos(k⋅r−wt+φ1)
E⃗2=e⃗2E20cos(k⃗⋅r⃗−wt+φ2)\vec E_2=\vec e_2E_{20}cos(\vec k\cdot \vec r-wt+\varphi_2)E2=e2E20cos(k⋅r−wt+φ2)
代码
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
matlab 画偏振态,MATLAB:绘制三维偏振光动画相关推荐
- matlab 画偏振态,MATLAB模拟偏振.doc
MATLAB模拟偏振 一.题目要求: 假设一波长为632nm的左旋圆偏振光垂直穿过半波片(厚度2.5mm),试计算输出光的偏振态.并用三维动画显示E穿透波片的演变过程. 如果入射光偏振态为线偏振,且振 ...
- matlab 画偏振态,光的偏振态分析MATLAB分析
光的偏振态的仿真 一.课程设计目的 通过对两相互垂直偏振态的合成 1.掌握圆偏振.椭圆偏振及线偏振的概念及基本特性: 2.掌握偏振态的分析方法. 二.任务与要求 对两相互垂直偏振态的合成进行计算,绘出 ...
- plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱
Matlab在任意两点之间绘制三维圆柱 Matlab在任意两点之间绘制三维圆柱 此函数可能存在一些不足,请多多指教! function plotcylinder(u1,u2,color_a,r) L= ...
- matlab绘图(三)绘制三维图像
目录 一.绘制三维曲线 二.绘制三维曲面 1.meshgrid函数 2.mesh和surf函数 一.绘制三维曲线 1.最基本的绘制三维曲线的函数-plot3 plot3(x1,y1,z1,选项1,x2 ...
- matlab实验7绘图操作绘制三维曲线,上机习题6 MATLAB7.0三维绘图
matlab三维绘图经典 实验六 MATLAB7.0三维绘图 实验目的: ① 掌握绘制三维图能形的方法: ② 掌握图形修饰处理方法: ③ 知道图像处理方法,了解动画制作方法. 实验要求:给出程序和实验 ...
- matlab画p轨道,matlab绘制原子轨道图.pdf
matlab绘制原子轨道图 课程论文 结构化学 2012 年4 月 course work structural chemistry April ,2012 球谐函数,原子轨道,电子云空间分布等值线图 ...
- matlab实验7绘图操作绘制三维曲线,matlab上机习题6 MATLAB7.0三维绘图
实验六MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法: ②掌握图形修饰处理方法: ③知道图像处理方法,了解动画制作方法. 实验要求:给出程序和实验结果. 实验内容: 一.绘制三维曲线 ...
- 怎样用MATLAB画二次函数曲线,matlab画二次函数图像
[8 70 118 100 9 0 5]; 以上是每一个 X 和 Y 对应的坐标,请问如何编程能够绘制平滑曲线,这个图形就像二次函数一样的 如果要在图中绘制一条直线加上 y=...... MATLAB ...
- 用matlab画干涉条纹图,matlab干涉条纹处理
基于matlab的等倾干涉实 验仿真黄强煌 2017.12.25 目录 Cont... [5] 符运良. MATLAB 在光学教学中的应用 . 华南热带农业大学学报, [J] 2004, (3 : 1 ...
最新文章
- linux mysql统计次数_MySQL统计函数记录
- tableau可视化数据分析60讲(二十二)-tableau常见面试题目
- 企业架构规划及服务器优化参数
- MessageQueue的使用方法(二)
- vue 过滤器 filter
- Eclipse设置Android Logcat输出字体大小
- 自己调用NTDLL函数
- C++静态库和动态库用法
- 嵌入式c语言 c语言_C和嵌入式C有什么区别?
- 高通骁龙888开始被Linux内核5.12版正式支持
- 各种工业以太网技术浅析
- 手机自动休眠与距离感应器失效的问题
- 特斯拉充电电流设置多大_特斯拉满电状态517公里,实际使用500公里。三种充电方式比较...
- 常见的系统漏洞安全扫描修复总结归纳
- html5 打字机效果,逼真的js打字机效果插件
- 如何做一名优秀的程序员?
- 电脑android模拟器哪个好用,安卓模拟器哪个好用
- 学习JavaScript这一篇就够了
- 华为新平板以美好体验定义青春
- 零基础转行,你要不要去编程培训班?