简介:本资源是一份面向高校物理光学课程学习者与MATLAB初学者的衍射现象仿真教学资料,聚焦夫琅和费衍射核心实验的编程实现与可视化分析。内容系统涵盖衍射积分法(单缝衍射、杨氏双缝干涉、黑白光栅衍射)与傅立叶变换法(圆孔/矩孔/三角孔衍射、正弦光栅衍射等)两大建模路径,每种方法均提供完整可运行的MATLAB代码、关键参数说明、理论公式推导及对应光强分布图像生成逻辑,并附有典型衍射图样截图与物理现象解读。资源为1个247KB的Word文档(.doc),结构清晰,含摘要、引言、两种方法的分步实现、程序注释、结果图示与教学总结,便于课堂讲授、课后复现或自学推演。目前已有793人学习下载,是理解波动光学原理、掌握MATLAB数值模拟技术与建立“理论—代码—图像”闭环认知的实用入门材料。
1. 光学衍射 MATLAB 模拟:不是写个fft2就算完,而是让物理图像“长出来”的完整方案
你有没有试过在 MATLAB 里敲完fft2(a),imshow 出来一片模糊亮斑,却说不清哪是零级主极大、哪是缺级位置?或者跑通单缝衍射代码,一换双缝参数,干涉条纹就“飘”出图框、强度崩塌——不是公式错了,是坐标系没对齐、归一化没做透、采样密度被悄悄背叛。这套光学衍射 MATLAB 模拟方案,专治这类“物理对得上、图像画不出”的玄学翻车。它不堆砌教科书推导,而是把大学光学实验课里最常考的 7 类典型衍射(单缝、双缝、圆/矩/三角孔、黑白光栅、正弦光栅)全部拆解成可复现、可调试、可答辩的模块化实现。适合正在做《物理光学》课程设计、《计算物理》大作业或毕业设计的学生——尤其当你被导师问“为什么这个峰比理论宽?”“缺级位置怎么验证?”时,能立刻调出对应参数、改一行代码、重绘一张图给出答案。它不是“MATLAB 入门+衍射公式粘贴”,而是一套从物理建模→数值离散→坐标映射→强度归一→图像语义标注的闭环流程。
2. 总体架构设计:双路径驱动的衍射模拟框架与四大核心模块职责划分
这套方案不是零散脚本合集,而是一个结构清晰、职责分明的双路径模拟框架。两条主干路径分别对应物理本质不同的两类衍射场景:衍射积分路径(适用于菲涅尔近场与夫琅和费远场的统一建模,强调光源离散化与路径差计算)和傅里叶变换路径(专攻夫琅和费远场,将衍射屏直接视为空间频谱滤波器)。二者并非替代关系,而是互补验证:积分法告诉你“光是怎么一步步走过来的”,FFT 法告诉你“屏函数在频域长什么样”。整个框架由四个不可拆分的核心模块支撑,每个模块都承担明确的物理意义与数值责任。
2.1 衍射积分路径:从惠更斯子波到离散求和的物理建模闭环
衍射积分路径的本质,是用数值方法忠实还原惠更斯-菲涅尔原理:将衍射屏上的每一点视为次级相干光源,计算其到观察屏上任一点的复振幅贡献,再矢量叠加。关键不在“加法”,而在“怎么加得准”。
- 屏面离散化模块:决定物理精度的起点。例如单缝建模中,
np=51不是随便取的整数,而是基于瑞利判据反推的最小采样点数——当缝宽a=1e-3m、波长lam=500e-9m时,若np<30,子波相位差alpha的离散误差会直接导致中央主极大展宽超 15%。代码中yp=linspace(0,a,np)必须保证np足够密,且yp是闭区间[0,a],否则边缘子波缺失。 - 路径差与相位计算模块:这是最容易埋雷的环节。杨氏双缝中
r1=sqrt((ys(i)-a/2).^2+D^2)看似简单,但ys是观察屏坐标向量,a/2是缝中心偏移,二者单位必须严格一致(全为米!),且D不能取1就完事——若实际实验D=2m,而代码仍用D=1,所有条纹间距将缩放 2 倍,答辩时无法自圆其说。 - 复振幅合成与强度归一模块:
sumcos^2 + sumsin^2是标准做法,但归一化必须锚定物理基准。代码中(sumcos^2+sumsin^2)/np^2的/np^2是关键:它表示np个等幅子波完全同相时的理论最大强度,确保不同np下的强度值可比。若漏掉/np^2,换np=101后图像整体变亮,误以为“分辨率提升”,实则只是数值膨胀。
2.2 傅里叶变换路径:从空域屏函数到频域衍射图样的精准映射
FFT 路径的威力在于效率,陷阱在于“黑匣子感”。很多同学imread一张图、fft2一下、imshow(abs(...))就交差,却解释不了为什么圆孔衍射图样中心是亮斑、四周是明暗相间环。本方案强制拆解 FFT 的每一步物理含义:
- 屏函数生成模块:不依赖外部图片。所有孔径(圆、矩、三角)均用数学方程实时生成二值矩阵,例如圆孔:
[x,y] = meshgrid(linspace(-R,R,512), linspace(-R,R,512)); aperture = (x.^2 + y.^2) <= R^2; % R为半径,单位:米这样做的好处是:R可精确控制(如R=5e-4),避免 BMP 图像像素尺寸与物理尺寸失配。
- FFT 预处理模块:
fftshift不是锦上添花,而是必需步骤。原始fft2输出的直流分量(零频)在矩阵左上角,而夫琅和费衍射图样的零级主极大必须在图像中心。fftshift交换象限,使频谱中心与图像中心严格对齐,否则plot(aabss)的横轴坐标毫无物理意义。 - 强度谱后处理模块:
abs(afft)得到的是振幅谱,而人眼感知和探测器响应的是光强(振幅平方)。因此正确流程是:I = abs(afft).^2→I_shifted = fftshift(I)→imshow(log(I_shifted+1))(加1防log0)。直接imshow(abs(afft))会掩盖弱级次,无法观察缺级。
2.3 坐标系统一模块:打通物理量、像素、显示坐标的三重映射
这是整套方案最易被忽视、却最影响结果可信度的模块。所有图像x/y坐标必须携带物理单位(米),而非像素索引。例如单缝衍射中:
ys=linspace(-ym,ym,ny)的ym=3*lam*D/a是物理半宽(单位:米),决定了观察屏范围;image(ym,ys,Br)的第一个参数ym是x方向物理范围(此处为单缝宽度方向,实际为常数),第二个参数ys是y方向物理坐标向量;subplot(1,2,2) plot(B,ys)中ys为横轴,B为纵轴强度,横轴标签必须是y (m)。
若错用plot(B,1:ny),横轴变成无量纲像素序号,答辩时被问“第37个像素对应多大衍射角?”,当场卡壳。本方案所有plot和image命令均显式传入物理坐标向量,杜绝此类低级错误。
2.4 可视化与标注模块:让图像自己讲物理故事
可视化不是“画出来就行”,而是“让图像承载可验证的物理信息”。本模块强制三项标注:
- 强度归一化标注:所有
imshow前执行Br = (B/max(B))*255,并在图标题注明I/I_max; - 理论特征线标注:在
plot(B,ys)中叠加理论曲线,例如单缝衍射的I = I0*(sin(alpha)/alpha).^2,用红色虚线标出第一极小位置y = ±lam*D/a; - 参数水印标注:每张图右下角用
text添加小字号参数:λ=500nm, a=1mm, D=1m。这不仅是美观,更是建立“参数-图像”强关联,证明你清楚每个数字如何塑造最终图案。
提示:所有模块的输入输出变量名均带物理含义前缀,如
ys(screen y-coordinate)、yp(aperture y-position)、lam(wavelength),禁用x1,x2,data等模糊命名。变量即文档,减少后期查证成本。
3. 关键模块实现:单缝、双缝、光栅的逐行代码解析与物理参数说明
本章不罗列全部代码,而是聚焦三个最具代表性的模块——单缝(基础衍射)、双缝(干涉+衍射耦合)、黑白光栅(多缝干涉+单缝衍射调制)——逐行解析其核心逻辑、参数物理意义及可调性设计。每一行代码背后,都对应一个可答辩的物理问题。
3.1 单缝衍射模块:离散子波求和中的采样密度与归一化真相
clear lam = 500e-9; % 波长:500纳米,可见绿光,固定值 a = 1e-3; % 缝宽:1毫米,关键可调参数,影响主极大宽度 D = 1; % 屏距:1米,实验室常用距离,影响条纹尺度 ym = 3*lam*D/a; % 观察屏半宽:覆盖±3个第一极小,确保图像完整 ny = 51; % 观察屏采样点数:奇数,保证中心对称 ys = linspace(-ym, ym, ny); % 物理y坐标向量(米) np = 51; % 缝面采样点数:必须≥30,保障子波离散精度 yp = linspace(0, a, np); % 缝面y坐标向量(米),[0,a]闭区间 for i = 1:ny sinphi = ys(i)/D; % 小角度近似:sinφ ≈ y/D alpha = 2*pi*yp*sinphi/lam; % 每个子波的相位:α = 2π·(路径差)/λ sumcos = sum(cos(alpha)); % 所有子波余弦分量之和 sumsin = sum(sin(alpha)); % 所有子波正弦分量之和 B(i,:) = (sumcos^2 + sumsin^2) / np^2; % 强度 = |复振幅|^2,归一化至np个同相子波 end N = 255; Br = (B/max(B))*N; % 归一化至0-255灰度 subplot(1,2,1) image(ym, ys, Br); % x方向为缝宽方向(常数ym),y方向为观察坐标 colormap(gray(N)); title('单缝夫琅和费衍射:I/I_{max}'); xlabel('x (m)'); ylabel('y (m)'); subplot(1,2,2) plot(B, ys); xlabel('I/I_{max}'); ylabel('y (m)'); title('强度分布剖面'); hold on; % 叠加理论第一极小线 y_min1 = lam*D/a; plot([0,1], [-y_min1,-y_min1], 'r--', 'LineWidth',1.2); plot([0,1], [y_min1, y_min1], 'r--', 'LineWidth',1.2); legend('仿真','理论极小位置');关键参数说明与可调性:
a(缝宽):减小a,主极大变宽,第一极小y_min1增大。这是验证衍射“越窄越散”的直接证据;np(子波数):若改为np=11,B曲线出现明显锯齿,主极大顶部变平,证明离散误差已不可忽略;ym(观察范围):若设为ym=lam*D/a,则仅覆盖中央峰,丢失极小值,无法验证理论。
3.2 杨氏双缝干涉模块:路径差计算中的坐标系陷阱与强度调制
clear lam = 500e-9; a = 2e-3; % 双缝中心间距:2毫米,非缝宽!注意术语 D = 1; ym = 5*lam*D/a; % 扩大范围,因干涉条纹更密集 n = 101; % 高密度采样,分辨细条纹 ys = linspace(-ym, ym, n); for i = 1:n r1 = sqrt((ys(i) - a/2)^2 + D^2); % 缝1到P点距离,注意:a/2是缝心偏移 r2 = sqrt((ys(i) + a/2)^2 + D^2); % 缝2到P点距离 delta_r = r2 - r1; % 路径差,单位:米 phi = 2*pi*delta_r / lam; % 相位差 B(i,:) = 4 * cos(phi/2).^2; % 双缝干涉强度公式:I = 4I0 cos²(Δφ/2) end N = 255; Br = (B/4.0)*N; % 归一化至最大强度4I0 subplot(1,2,1) image(ym, ys, Br); colormap(gray(N)); title('杨氏双缝干涉:I/I_{max}'); xlabel('x (m)'); ylabel('y (m)'); subplot(1,2,2) plot(B, ys); xlabel('I/I_{max}'); ylabel('y (m)'); title('干涉条纹剖面'); hold on; % 叠加理论亮纹位置:y_k = k*lam*D/a k_vals = -3:3; y_theory = k_vals * lam * D / a; for k = 1:length(y_theory) plot([0,1], [y_theory(k), y_theory(k)], 'g*', 'MarkerSize',8); end legend('仿真','理论亮纹');避坑重点:
a是缝中心间距,不是缝宽!若误将a设为缝宽(如1e-3),而实际间距为2e-3,则理论亮纹间距计算错误,y_theory标注失效;r1,r2计算必须用sqrt,不可用小角度近似r1≈D+(y-a/2)^2/(2D),否则高阶项累积导致条纹弯曲(尤其在ym较大时);B(i,:) = 4 * cos(phi/2).^2中的4是理论最大值,归一化Br = (B/4.0)*N确保灰度 255 对应I_max,否则无法与单缝I_max比较。
3.3 黑白光栅衍射模块:多缝干涉与单缝衍射的双重调制实现
clear lam = 500e-9; N = 2; % 光栅缝数:2,即双缝光栅,可扩展至5,10,50 a = 2e-4; % 单缝宽度:0.2毫米 d = 5*a; % 光栅常数(缝中心距):1毫米,d/a=5决定缺级 D = 5; % 屏距:5米,远场条件更充分 ym = 2*lam*D/a; % 范围由单缝衍射包络决定 n = 1001; % 超高采样,分辨密集干涉峰 ys = linspace(-ym, ym, n); for i = 1:n sinphi = ys(i)/D; alpha = pi*a*sinphi/lam; % 单缝衍射因子参数:α = πa·sinφ/λ beta = pi*d*sinphi/lam; % 多缝干涉因子参数:β = πd·sinφ/λ % 光栅强度公式:I = I0 * (sinα/α)^2 * (sin(Nβ)/sinβ)^2 % 注意:sinβ在β=kπ处为0,需特殊处理避免除零 if abs(beta) < 1e-10 interference_term = N^2; % β→0时,(sin(Nβ)/sinβ)^2 → N^2 else interference_term = (sin(N*beta)/sin(beta))^2; end diffraction_term = (sin(alpha)/alpha)^2; B(i,:) = diffraction_term * interference_term; end B1 = B / max(B); % 归一化 NC = 255; Br = (B1)*NC; subplot(1,2,1) image(ym, ys, Br); colormap(gray(NC)); title('黑白光栅衍射:I/I_{max}'); xlabel('x (m)'); ylabel('y (m)'); subplot(1,2,2) plot(B1, ys); xlabel('I/I_{max}'); ylabel('y (m)'); title('光栅衍射剖面'); hold on; % 标注理论缺级位置:当 d/a = 5,缺级发生在 k=±5,±10,... k_missing = [-10,-5,5,10]; y_missing = k_missing * lam * D / d; for k = 1:length(y_missing) plot([0,1], [y_missing(k), y_missing(k)], 'mx', 'MarkerSize',6); end legend('仿真','理论缺级');物理参数联动说明:
d/a = 5:决定缺级级次k = ±5, ±10...。若将d改为6*a,缺级移至k=±6,图像中原本存在的第5级亮纹消失,验证缺级公式k = m·(d/a);N=2:缝数。增大N(如N=10),干涉主极大变尖锐,次极大被压制,体现“多缝提高分辨率”;D=5:增大D使条纹间距Δy = lam*D/d增大,便于观察,但计算量增加。D过小(如D=0.5)会导致sinphi = y/D超出小角度范围,需启用精确路径差计算。
4. 傅里叶变换路径实战:从自定义孔径到正弦光栅的全流程实现与避坑指南
傅里叶路径的优雅在于简洁,危险在于“一键到位”掩盖了所有假设。本章带你亲手构建孔径、执行 FFT、解读频谱,并直面三个高频翻车点——它们不是 bug,而是物理约束未被满足的必然结果。
4.1 自定义孔径生成:用数学方程代替 BMP 导入的绝对控制权
放弃imread('circle.bmp')!用代码生成孔径,才能精确控制物理尺寸。以下为圆孔、矩孔、三角孔的标准生成模板:
% ===== 圆孔 ===== R = 5e-4; % 半径 0.5mm M = 512; % 矩阵尺寸,必须为2的幂(利于FFT) [x,y] = meshgrid(linspace(-R,R,M), linspace(-R,R,M)); circle_ap = double(x.^2 + y.^2 <= R^2); % 二值矩阵,1=透光,0=遮挡 % ===== 矩孔 ===== Wx = 1e-3; Wy = 0.5e-3; % 宽、高均为米 [x,y] = meshgrid(linspace(-Wx/2,Wx/2,M), linspace(-Wy/2,Wy/2,M)); rect_ap = double(abs(x) <= Wx/2 & abs(y) <= Wy/2); % ===== 三角孔(顶点朝上)===== base = 1e-3; height = 0.866e-3; % 等边三角形,高=√3/2*底 [x,y] = meshgrid(linspace(-base/2,base/2,M), linspace(-height/2,height/2,M)); % 三角形三条边方程:y <= (√3)x + height/2, y <= -(√3)x + height/2, y >= -height/2 tri_ap = double( y <= sqrt(3)*x + height/2 & ... y <= -sqrt(3)*x + height/2 & ... y >= -height/2 );关键设计点:
linspace范围直接设为物理尺寸(-R到R),矩阵中心即孔径几何中心;double(...)强制转为双精度,避免imread读取的 uint8 类型在 FFT 中溢出;- 所有孔径矩阵尺寸
M=512,确保 FFT 效率,且M足够大以容纳细节(R=5e-4m在M=512下单像素≈2e-6m,远小于波长,满足奈奎斯特采样)。
4.2 FFT 衍射图样生成:四步不可省略的物理流
% 以圆孔为例 aperture = circle_ap; % 步骤1:补零至更大尺寸(提升频域分辨率) M_pad = 1024; aperture_padded = padarray(aperture, [(M_pad-M)/2, (M_pad-M)/2], 'post'); % 步骤2:二维FFT + 频谱中心化 A_fft = fft2(aperture_padded); A_shifted = fftshift(A_fft); % 步骤3:计算强度谱(振幅平方!) I_spectrum = abs(A_shifted).^2; % 步骤4:对数压缩显示(增强弱级次可见性) I_display = log(I_spectrum + 1); % +1防log0 % 显示 figure; subplot(1,3,1); imshow(aperture, []); title('圆孔屏函数'); subplot(1,3,2); imshow(I_display, []); title('衍射强度谱(对数)'); subplot(1,3,3); % 提取中心水平剖面 center_row = M_pad/2; plot(I_spectrum(center_row, :)); xlabel('x (pixel)'); ylabel('I (a.u.)'); title('强度剖面');为什么必须补零(Padding)?
不补零时,fft2(aperture)的频域分辨率Δf = 1/(M*Δx),其中Δx = 2R/M是空域采样间隔。R=5e-4,M=512→Δx≈1.95e-6m→Δf≈1.02e6 m^{-1}。而夫琅和费衍射角θ ≈ λf,Δθ ≈ λΔf ≈ 0.0005 rad,约0.03度——人眼无法分辨。补零至M_pad=1024,Δf减半,Δθ减半,条纹更锐利。
4.3 正弦光栅生成与衍射验证:三阶衍射斑的物理意义
正弦光栅是唯一产生有限个离散衍射级的屏函数,完美验证傅里叶光学核心思想。
% 生成正弦光栅(灰度,非二值) L = 1e-3; % 光栅周期 1mm M = 512; [x,~] = meshgrid(linspace(-L/2, L/2, M), linspace(-L/2, L/2, M)); grating = 0.5 + 0.5*cos(2*pi*x/L); % 范围[0,1],平均透光率50% % 保存为BMP(若需外部导入) % imwrite(uint8(grating*255), 'sine_grating.bmp'); % FFT衍射 G_fft = fft2(grating); G_shifted = fftshift(G_fft); I_grating = abs(G_shifted).^2; % 显示并标注三级衍射斑 figure; subplot(1,2,1); imshow(grating, []); title('正弦光栅(空域)'); subplot(1,2,2); imshow(log(I_grating+1), []); title('衍射谱(对数)'); % 理论:仅k=0,±1级存在,因cos函数傅里叶展开只有3项 hold on; M2 = size(I_grating,1)/2; scatter([M2, M2-100, M2+100], [M2, M2, M2], 100, 'r', 'filled'); % 标注中心及±1级 legend('0级','−1级','+1级');物理验证:
- 理论预测:正弦光栅
g(x)=1/2 + 1/2 cos(2πx/L)的傅里叶变换为δ(f) + 1/2 δ(f-1/L) + 1/2 δ(f+1/L),故仅k=0,±1三级衍射斑; - 仿真结果:
imshow(log(I_grating+1))中,除中心亮斑外,仅左右对称两个次亮斑,其余区域接近背景噪声,证实理论; - 若将
cos换为cos^2,则出现k=0,±2级,验证非线性调制引入高次谐波。
4.4 常见问题排查:傅里叶路径三大翻车现场与根治方案
注意:以下问题不是代码错误,而是物理模型与数值实现不匹配的必然表现。
现象1:衍射图样中心发黑,或零级主极大异常微弱
原因:孔径平均透光率过低(如二值圆孔mean(circle_ap)=πR²/(2R)²=π/4≈0.785,正常;但若误用double(x.^2+y.^2<R^2)未加=,边缘像素丢失,平均透光率下降)。
解决:检查mean(aperture(:)),理想二值孔径应在0.7~0.8(圆孔)或0.5(矩孔);若<0.1,必有生成逻辑错误。用imagesc(aperture)查看孔径是否完整。
现象2:衍射斑呈十字形或网格状,而非圆形/矩形对称
原因:fftshift未执行,或执行对象错误(对abs(fft2())shift,而非对复数fft2()shift)。原始fft2直流分量在左上角,未fftshift时,零级在角上,其他级次沿对角线分布。
解决:严格按顺序A_fft = fft2(ap); A_shifted = fftshift(A_fft); I = abs(A_shifted).^2;。执行后I(1,1)应为最大值。
现象3:高阶衍射斑模糊、弥散,无法分辨缺级
原因:空域采样不足(M太小)或观察屏范围不足(linspace范围太小)。FFT 频域分辨率Δf = 1/(M*Δx),Δx是空域最小单元。若R=5e-4m,M=128,则Δx≈7.8e-6m,Δf≈1.28e6 m^{-1},Δθ≈0.00064 rad,不足以分离相邻级次。
解决:增大M至512或1024;确保linspace范围覆盖至少±3个最高预期级次位置,例如光栅d=1e-3m,λ=500e-9m,第10级θ_10≈5e-3 rad,D=1m时y_10≈5e-3m,linspace范围应≥±1e-2m。
5. 方案验收与答辩技巧:用三张图、一个表、一次参数扫描征服导师
验收不是“程序跑通”,而是证明你理解每个像素背后的物理。答辩时,导师最可能问的不是“代码怎么写”,而是“这个峰为什么在这?”“参数变一下,图会怎么变?”。以下是我带过多个光学仿真实验项目总结出的硬核验收法——用三张精心设计的图、一张参数影响表、一次动态参数扫描,把你的理解可视化、可验证、可答辩。
5.1 验收三图法:用对比图构建物理因果链
图1:理论 vs 仿真对比图(单缝)
- 左:
plot(B, ys)仿真强度剖面; - 右:同一坐标系下叠加理论曲线
I_theory = (sin(pi*a*ys/(lam*D))./(pi*a*ys/(lam*D))).^2; - 验收点:第一极小位置
y_min是否重合?若偏差 >5%,检查a,lam,D单位是否统一为米;主极大半高宽是否匹配?若仿真更宽,检查np是否足够(np<30必然展宽)。
图2:参数扫描热力图(光栅缺级验证)
- 生成一个
d(光栅常数)从0.8e-3到1.2e-3、a(缝宽)从0.1e-3到0.3e-3的二维扫描; - 对每组
(d,a),计算衍射图样,提取第5级强度I5; - 绘制热力图
heatmap(d_vec, a_vec, I5_matrix); - 验收点:热力图中是否出现一条
I5≈0的直线?其斜率是否等于d/a=5?这条线就是缺级轨迹,是理论最有力的可视化证据。
图3:傅里叶路径物理流图(FFT 四步分解)
- 1×4 子图:① 孔径图像(圆孔);②
abs(fft2(ap))(未 shift,直流在角上);③abs(fftshift(fft2(ap)))(直流居中);④log(abs(...)+1)(对数增强); - 验收点:图②与图③对比,证明
fftshift的必要性;图④中圆环是否清晰?若模糊,说明M不足或R过小。
5.2 参数影响速查表:答辩时快速响应的武器
将核心参数的影响整理成表格,打印在答辩稿首页。导师问“如果波长换成红光(650nm),条纹怎么变?”,你秒答:“根据Δy = λD/d,条纹间距扩大 1.3 倍,同时单缝包络变宽,缺级位置外移”。
| 参数 | 符号 | 物理意义 | 增大时衍射图样变化 | 理论依据 |
|---|---|---|---|---|
| 波长 | λ | 光的颜色 | 条纹间距 Δy ∝ λ;主极大变宽 | Δy = λD/d,y_min = λD/a |
| 缝宽 | a | 单缝宽度 | 主极大变窄;第一极小内移 | y_min = λD/a |
| 光栅常数 | d | 缝中心距 | 干涉条纹变密;缺级级次 k = m·(d/a) 外移 | Δy = λD/d,k = m·d/a |
| 缝数 | N | 光栅总缝数 | 主极大变尖锐;次极大抑制 | (sin(Nβ)/sinβ)^2峰宽 ∝ 1/N |
| 屏距 | D | 衍射屏到观察屏距离 | 所有条纹等比例放大 | y = D·tanθ ≈ D·θ |
5.3 动态参数扫描演示:让答辩变成现场实验
准备一个scan_demo.m脚本,用slider控制关键参数,实时刷新图像:
% 创建滑块 fig = figure('Name','参数扫描演示'); ax1 = subplot(1,2,1); ax2 = subplot(1,2,2); s_d = uicontrol('Style','slider','Min',0.5e-3,'Max',1.5e-3,'Value',1e-3,... 'Position',[20 20 200 20],'Callback',@update_plot); s_a = uicontrol('Style','slider','Min',0.1e-3,'Max',0.5e-3,'Value',0.2e-3,... 'Position',[20 50 200 20],'Callback',@update_plot); function update_plot(~,~) d_val = get(s_d,'Value <p> <a href="https://download.csdn.net/download/qq_33324868/9343991" style="color:#ec7500;font-size:14px;"> 本文还有配套的精品资源,点击获取 </a> <img alt="menu-r.4af5f7ec.gif" src="https://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif" style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;"> </p>