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绘制单缝、光栅、圆孔、矩孔衍射图样相关推荐

  1. 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆

    圆与圆的位置关系有:相离,外切,相交,内切,内含,它们之间的位置是由圆心距与两半径的长度来确定的.那么如果想画出三个两两相切的圆,要怎样画呢?这时我们可以利用几何画板这个绘图工具,画出既标准又美观的图 ...

  2. 夫琅禾费matlab方孔圆孔,圆孔圆环夫琅禾费衍射实验的Matlab仿真设计.pdf

    圆孔圆环夫琅禾费衍射实验的Matlab仿真设计,夫琅禾费衍射matlab,夫琅禾费圆孔衍射,matlab圆孔衍射,夫琅禾费衍射,单缝夫琅禾费衍射,夫琅禾费衍射实验,夫琅禾费衍射实验报告,夫琅禾费衍射公 ...

  3. matlab绘制圆,且求解两个圆的交点坐标

    前言 这里简单记录下对于matlab绘制圆,以及求解两圆交点的坐标的实现(包括C++). 一 绘制圆 circle.m文件: function [] = circle(x, y, r, color) ...

  4. MATLAB绘制圆、椭圆、矩形等基本平面图形

    MATLAB绘制基本平面图形 **画线的方法** ***rectangle函数** **画矩形的方法** **旋转矩形的方法** **画圆的方法** **画圆弧的方法** **画椭圆的方法** **画 ...

  5. matlab绘制双缝、等厚劈尖干涉、牛顿环、迈克尔逊等倾干涉图样

    matlab绘制双缝.等厚劈尖干涉.牛顿环.迈克尔逊等倾干涉图样 1.matlab绘制双缝干涉图样 2.matlab绘制等厚劈尖干涉图样 3.matlab绘制牛顿环干涉图样 4.matlab绘制迈克尔 ...

  6. matlab自带有限元工具分析圆孔应力集中问题

    有限元分析结构的力学行为是力学人必备的知识技能,一般分析的步骤为几何建模.划分网格.施加荷载和边界条件.求解,下面我将利用matlab自带的有限元求解器来解决圆孔应力集中问题,本文的matlab版本为 ...

  7. 怎么用matlab赋值圆孔,求一个用MATLAB做圆孔或圆屏衍射的实验,要求程序正确,能出图像,非常感谢...

    满意答案 usrdu 2013.11.22 采纳率:50%    等级:13 已帮助:9126人 %%傅里叶变换法 clear all z1=20; r=4; N=512; d=180; lambda ...

  8. nyquist图怎么画matlab,用MATLAB绘制Nyquist图

    <用MATLAB绘制Nyquist图>由会员分享,可在线阅读,更多相关<用MATLAB绘制Nyquist图(9页珍藏版)>请在人人文库网上搜索. 1.用MATLAB绘制Nyqu ...

  9. LISP 圆孔标记_lisp使用说明

    字符串结合功能函数 (getstring 提示) 要求键入一个字符串 (rtos 实数) 将实数转换成字符串 范例说明 1: (strcat "abc" "123&quo ...

  10. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析

    问题描述 一个承受拉力的平板,中心位置有一小孔,几何尺寸如下图所示.要求模拟平板受力状态,分析小孔处的应力集中. 材料属性:弹性模量E = 200000,泊松比ν = 0.3 拉伸载荷:p = 10 ...

最新文章

  1. python输出多行对齐_如何用python3输出print对齐?
  2. BZOJ2118墨墨的等式[数论 最短路建模]
  3. st edmunds和emmanuel college
  4. world wide patent search website
  5. 【spring cloud zookeeper】KeeperErrorCode = Unimplemented for
  6. jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
  7. java例程练习(一维数组)
  8. 服务器被一堆系统登录_WIN10做天高服务器客户端登录出现“操作系统原因无法登录”...
  9. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)
  10. LeetCode 743. 网络延迟时间(最短路径)
  11. 计算机不能辨别汉字wifi,Win10系统连接不上被隐藏的中文Wifi的解决方法
  12. String StringBuilder StringBuffer三者之间的区别~~~
  13. WebStorm 常用快捷键大全 - 归纳总结篇
  14. c java互通rsa_C# RSA和Java RSA互通
  15. php管理员登陆问题,discuz论坛管理员无法登录后台的原因和解决方法
  16. 获取androdmanifest里面的meta-data
  17. python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
  18. 掌管大局的IoC Service Provider
  19. 【Python】Python核心编程
  20. i2c-tools 使用集锦

热门文章

  1. Hbuilder x安装教程(前端html5开发)
  2. python 日期的周数_术业有专攻:日期时间模块datetime
  3. linux 蓝牙串口 调试,linux 蓝牙串口 连接android手机调试
  4. ROS学习笔记(一)#ROS系统及RoboWare的安装
  5. php渐变闪动字体代码,《天龙八部2》33种超好看彩色闪字渐变代码分享
  6. LaTeX详细安装步骤和简明教程
  7. UDP与TCP报文格式,字段意义
  8. 基于FPGA的波束形成verilog开发
  9. Linux服务篇--企业级调度器LVS
  10. JAVA入门教程-专题视频课程