|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ X2 R' u& Y! a% H! hMATLAB源程序代码分享:杨氏双孔干涉实验的MATLAB计算模拟( J' `, ~) V2 ~# j6 l# Y
%% 定义实验的参数* G$ u9 v* k+ f# H8 Z" i, f" t
clear;clc;close all
8 O2 p& K- t/ t" flambda=3000e-9; % 光的波长8 Q: ?3 Z1 e# m# Z& o2 H5 f
d=7e-5; % 双孔的距离
! n& h i$ s1 ]9 q8 L/ }D=1.2; % 屏幕距双孔的距离
, P/ o2 }8 {1 W# }# K, k" j
; K: T* ~6 [# e1 o%% 定义观察屏幕的范围, 并计算各个观测点的坐标值( g& t& B: q3 w
xa=-2; % 最小的横坐标值7 T+ d+ e5 ^4 o9 k
xb=2; % 最大的横坐标值' r0 c# r; `8 t
ya=-0.5; % 最小的纵坐标值, f" i6 E( o: s$ A' }3 @6 n
yb=0.5; % 最大的纵坐标值
- ?0 |) P. P( P c6 Tn1=1000; % x 方向等分份数
, a$ k2 z1 @ p# [* N) Kn2=1000; % y 方向等分份数
7 p% k0 B3 \( a! O2 i0 Z/ _. s! w$ V) E
x=linspace(xa,xb,n1); % x 坐标
. u& c" M, Z& P5 [y=linspace(ya,yb,n2); % y 坐标
/ A8 t4 C7 @+ m0 |' v[xx,yy]=meshgrid(x,y); % 网格化处理, 得到观测点的坐标值
8 q1 _! w* H; n. y
: o- O- b4 v( [%% 计算各个观测点处的光强
8 \ ^; q# ~0 i& f' Vk=2*pi/lambda; % 计算波数
' u3 |" R5 K$ @+ Z. [! q0 j: {1 hr1=sqrt((xx-d/2).^2+yy.^2+D^2); % 观测点到孔 1 的距离; O" a: \8 M& Q, u) m% q$ I
r2=sqrt((xx+d/2).^2+yy.^2+D^2); % 观测点到孔 2 的距离" a0 s" ?: Z$ e0 r8 h3 |9 a
I=(cos(k*r1)./r1+cos(k*r2)./r2).^2+(sin(k*r1)./r1+sin(k*r2)./r2).^2; % 计算观测点处的光强
1 l2 g Q6 i3 jI=I/(max(max(I))); % 归一化处理% d! N+ R7 ?+ Q
9 o- C6 `7 L& q7 h
%% 绘制杨氏双孔干涉条纹
( O5 u# p( {2 c+ i- yfigure
, _4 ]- r' a7 Y6 m% Dset(gcf,'units','normalized','position',[0.2 0.2 0.6 0.6]); % 设置 figure 窗口的位置和尺寸
: \5 L5 N H4 l7 I( U5 n1 t% Osubplot(2,1,1)
: o/ u Z2 m. Limage([xa xb],[ya yb],I*255) % 显示条纹在屏幕上的二维图像
* p0 k9 k6 v$ F) H' Dcolormap(gray(255)) % 图像显示为黑白, 图像的灰度值为 255 级
( c2 k+ A, w* D' p/ saxis equal. d) k) v" g3 R& k& d" B
axis([xa xb ya yb])
: w# l( Q! t) f& }6 h; c [xlabel('x (m)')% j) f9 F; j. }# {1 m
ylabel('y (m)')
. M4 m) W" t' ^) {$ c& Otitle('杨氏双孔干涉条纹')9 [9 b& B5 V. M# [ X, M: W3 S
4 U% @3 E; B! _/ r
%% 绘制光强分布的三维图( w: u0 |, [# {9 ^! ~
subplot(2,1,2)
8 l3 a( [3 w- A1 }mesh(xx,yy,I)/ J# ^8 {$ ~4 y& F9 f/ K% {1 {6 F! k
xlabel('x (m)')# j. S& T* H- G! Y
ylabel('y (m)')
; a* O+ x$ _1 bzlabel('光强')
( V+ v1 x; v! c, o* D* O/ [title('光强分布') |
|