Matlab绘制单缝、光栅、圆孔、矩孔衍射图样
Matlab绘制单缝、光栅、圆孔、距孔衍射图样
- 1.matlab绘制单缝衍射图样
- 2. matlab绘制光栅衍射图样
- 3.matlab绘制圆孔衍射图样
- 4.matlab绘制矩孔衍射图样
理论知识可以参考下面的这篇文章。
https://blog.csdn.net/Carifee/article/details/119831170?spm=1001.2014.3001.5501
1.matlab绘制单缝衍射图样
方法1:
%%单缝衍射%%
clear
lambda=500e-9; %波长
a=1e-3; %缝宽
f=1; %透镜到像面的距离
ym=6*lambda*f/a; %屏幕上y的范围
n=51; %屏幕上的取样点数,相当于
ys=linspace(-ym,ym,n); %划定取样数组
yp=linspace(0,a,n); %将缝宽也划定数组
for i=1:n
sinphi=ys(i)/f;
u=pi*yp*sinphi/lambda;
sumcos=sum(cos(u));
sumsin=sum(sin(u));
B(i,:)=(sumcos^2+sumsin^2)/n^2;
end
N=255; %确定灰度的等级
Br=(B/max(B))*N;
subplot(1,2,1)
image(ym,ys,Br);
colormap(hot(N)); %色调处理
subplot(1,2,2)
plot(B,ys,'k');
结果:
方法2:
clc
clear
lambda=632.8e-9; %波长
xmax=0.02; %x轴宽度
def=1e-4; %步长
x=-xmax:def:xmax;
y=-xmax:def:xmax;
lenm=length(x);
lenn=length(y);
for m=1:lenmfor n=1:lennalpha=pi*x(m)/(lambda);beta=pi*y(n)/(lambda);I(m,n)=((sin(beta))/(beta))^2;end
end
I=I/(max(max(I)));
[X,Y]=meshgrid(x,y);
figure
imshow(255*I);
xlabel('x');
ylabel('y');
figure
mesh(x,y,I)
xlabel('x');
ylabel('y');
zlabel('光强');
结果
2. matlab绘制光栅衍射图样
%%光栅衍射%%
clear
lamda=500e-9; %波长
N=2; %缝数 ,可以随意更改变换
a=2e-4; %缝宽
f=5; %透镜到像面的距离
d=5*a; %光栅常数
ym=2*lamda*f/a; %屏幕上y的范围
xs=ym;
n=1001;
ys=linspace(-ym,ym,n);
for i=1:nsinphi=ys(i)/f; alpha=pi*a*sinphi/lamda;beta=pi*d*sinphi/lamda;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);
end
NC=255; %确定灰度的等级
Br=(B/max(B))*NC;
subplot(1,2,1)
image(xs,ys,Br);
colormap(hot(NC)); %色调处理
subplot(1,2,2)
plot(B1,ys,'k');
结果:
3.matlab绘制圆孔衍射图样
clc
clear
lambda=632.8e-9; %波长
r=0.0005; %圆孔半径
f=1; %焦距
def=1e-5;
xm=6000*lambda*f;
[x,y]=meshgrid(-xm:def:xm);
s=2*pi*r*sqrt(x.^2+y.^2)./(lambda*f);
I=4*(besselj(1,s)./(s+eps)).^2;figure
plot(-s,I,s,I);
xlabel('s');
ylabel('光强');
figure
imshow(I*255) %二维图
xlabel('x');
ylabel('y');
figure
mesh(x,y,I) %三维图
xlabel('x');
ylabel('y');
zlabel('光强')
结果:
4.matlab绘制矩孔衍射图样
方法1:
clear
lamda=500e-9;
a=1e-3;
b=1e-3;
f=1;
m=500;
ym=8000*lamda*f;
ys=linspace(-ym,ym,m);
xs=ys;
n=255;
for i=1:msinth1=xs(i)/sqrt(xs(i)^2+f^2);sinth2=ys./sqrt(ys.^2+f^2);angleA=pi*a*sinth1/lamda;angleB=pi*b*sinth2./lamda;
B(:,i)=(sin(angleA).^2.*sin(angleB).^2.*5000./(angleA.^2.*angleB.^2));
end
subplot(1,2,1)
image(xs,ys,B)
colormap(gray(n))
subplot(1,2,2)
plot(B(m/2,:),ys,'k')
结果:
方法2:
clc
clear
a=0.0005; %长
b=0.0005; %宽
lambda=632.8e-9; %波长
f=1; %焦距
xm=6000*lambda*f;
def=1e-5;
I0=1;
[x,y]=meshgrid(-xm:def:xm);
alpha=(pi*a*x)/(f*lambda);
beta=(pi*b*y)/(f*lambda);
I=I0*(sin(alpha).^2.*sin(beta).^2./((alpha.^2+eps).*(beta.^2+eps)));
figure
imshow(I*255);
xlabel('x');
ylabel('x');
figure
mesh(x,y,I)
xlabel('x');
xlabel('x');
zlabel('光强');
结果:
Matlab绘制单缝、光栅、圆孔、矩孔衍射图样相关推荐
- 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆
圆与圆的位置关系有:相离,外切,相交,内切,内含,它们之间的位置是由圆心距与两半径的长度来确定的.那么如果想画出三个两两相切的圆,要怎样画呢?这时我们可以利用几何画板这个绘图工具,画出既标准又美观的图 ...
- 夫琅禾费matlab方孔圆孔,圆孔圆环夫琅禾费衍射实验的Matlab仿真设计.pdf
圆孔圆环夫琅禾费衍射实验的Matlab仿真设计,夫琅禾费衍射matlab,夫琅禾费圆孔衍射,matlab圆孔衍射,夫琅禾费衍射,单缝夫琅禾费衍射,夫琅禾费衍射实验,夫琅禾费衍射实验报告,夫琅禾费衍射公 ...
- matlab绘制圆,且求解两个圆的交点坐标
前言 这里简单记录下对于matlab绘制圆,以及求解两圆交点的坐标的实现(包括C++). 一 绘制圆 circle.m文件: function [] = circle(x, y, r, color) ...
- MATLAB绘制圆、椭圆、矩形等基本平面图形
MATLAB绘制基本平面图形 **画线的方法** ***rectangle函数** **画矩形的方法** **旋转矩形的方法** **画圆的方法** **画圆弧的方法** **画椭圆的方法** **画 ...
- matlab绘制双缝、等厚劈尖干涉、牛顿环、迈克尔逊等倾干涉图样
matlab绘制双缝.等厚劈尖干涉.牛顿环.迈克尔逊等倾干涉图样 1.matlab绘制双缝干涉图样 2.matlab绘制等厚劈尖干涉图样 3.matlab绘制牛顿环干涉图样 4.matlab绘制迈克尔 ...
- matlab自带有限元工具分析圆孔应力集中问题
有限元分析结构的力学行为是力学人必备的知识技能,一般分析的步骤为几何建模.划分网格.施加荷载和边界条件.求解,下面我将利用matlab自带的有限元求解器来解决圆孔应力集中问题,本文的matlab版本为 ...
- 怎么用matlab赋值圆孔,求一个用MATLAB做圆孔或圆屏衍射的实验,要求程序正确,能出图像,非常感谢...
满意答案 usrdu 2013.11.22 采纳率:50% 等级:13 已帮助:9126人 %%傅里叶变换法 clear all z1=20; r=4; N=512; d=180; lambda ...
- nyquist图怎么画matlab,用MATLAB绘制Nyquist图
<用MATLAB绘制Nyquist图>由会员分享,可在线阅读,更多相关<用MATLAB绘制Nyquist图(9页珍藏版)>请在人人文库网上搜索. 1.用MATLAB绘制Nyqu ...
- LISP 圆孔标记_lisp使用说明
字符串结合功能函数 (getstring 提示) 要求键入一个字符串 (rtos 实数) 将实数转换成字符串 范例说明 1: (strcat "abc" "123&quo ...
- Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
问题描述 一个承受拉力的平板,中心位置有一小孔,几何尺寸如下图所示.要求模拟平板受力状态,分析小孔处的应力集中. 材料属性:弹性模量E = 200000,泊松比ν = 0.3 拉伸载荷:p = 10 ...
最新文章
- python输出多行对齐_如何用python3输出print对齐?
- BZOJ2118墨墨的等式[数论 最短路建模]
- st edmunds和emmanuel college
- world wide patent search website
- 【spring cloud zookeeper】KeeperErrorCode = Unimplemented for
- jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
- java例程练习(一维数组)
- 服务器被一堆系统登录_WIN10做天高服务器客户端登录出现“操作系统原因无法登录”...
- [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)
- LeetCode 743. 网络延迟时间(最短路径)
- 计算机不能辨别汉字wifi,Win10系统连接不上被隐藏的中文Wifi的解决方法
- String StringBuilder StringBuffer三者之间的区别~~~
- WebStorm 常用快捷键大全 - 归纳总结篇
- c java互通rsa_C# RSA和Java RSA互通
- php管理员登陆问题,discuz论坛管理员无法登录后台的原因和解决方法
- 获取androdmanifest里面的meta-data
- python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
- 掌管大局的IoC Service Provider
- 【Python】Python核心编程
- i2c-tools 使用集锦