可以用MATLAB提供的一些基本旦袜对话框函数显示,例如:
str={'i am 团迟搏a student''', 'can i help you''', 'i like lessons'''塌祥}helpdlg(str)
你对照单缝衍射光强分布公式看这个程序运宽,就简单了,程序中用image函数仿真绘制衍射图样,用plot函数绘制光强;
没有主函数,程序前部分生成仿真单缝衍射所需要的光强分布数据(51个点敏蠢数据),后旁拿亮部分是用image,plot两个函数(MATLAB自己的)仿真图像;
用subplot将图形窗口分成两块,第一块仿真绘制衍射图样,第二块用plot函数绘制光强。
关键语句,我在后面进行了注释!
lam=500e-9
a= 1e-3f=1
xm= 3*lam*f/a
nx= 51
xs=linspace(-xm,xm,nx)%在-xm到xm之间均匀产生51个数据
np=51
xp=linspace(0,a,np)%在0到a之间均匀产生51个数据
%以上语句创建若干变量,与特定公式有关
for i=1:nx
sinphi= xs(i)/f
alpha=2*pi*xp*sinphi/lam
sumcos=sum(cos(alpha))
sumsin=sum(sin(alpha))
B(i,:)=(sumcos^2+sumsin^2)/np^2
end
%以上语句为for循环,计算51个位置的衍射光强,放在B向量中
N=255
Br=(B/max(B))*N%归一化到对应像素灰度
figure(1)
subplot(1,2,1)
image(xm,xs,Br)%仿真衍射图像
colormap(gray(N))
subplot(1,2,2)
plot(B,xs)%仿真单缝衍射光强
模拟导d追踪问题程序如山举下:(此程序在matlab R2014b上调试的)clearclc
v0=10
xw=0
yw=0.001
xr=-150
yr=10
dt=0.005
t=0
figure('units','normalized')
axis([xr 0,0 -xr])
axis off
set(gcf,'color','w')
w=line(xw,yw,'color','r','逗空碧marker','.','markersize',20,'erasemode','xor')
r=line(xr,yr,'color','b','marker','.','markersize',10,'erasemode','xor')
wd=line(xw,yw,'color','r','linestyle','-','linewidth',2,'erasemode','none')
rd=line(xr,yr,'color','c','linestyle','-','linewidth',2,'erasemode','none')
while (abs(1-xw/xr)>=1e-5||abs(1-yw/yr)>=1e-5)
yr=v0*t+0.1*t^2
xr=-150+0.5*t^2
l=sqrt((xw-xr)^2+(yw-yr)^2)
vx=2*v0*(xr-xw)/l
vy=2*v0*(yr-yw)/l
xw=xw+vx*dt
yw=yw+vy*dt
set(w,'xdata',xw,'ydata',yw)
set(wd,'xdata',xw,'ydata',yw)
set(r,'xdata',xr,'ydata'亏团,yr)
set(rd,'xdata',xr,'ydata',yr)
drawnow
t=t+dt
end
hold on
fill([xw-5 xw xw+5 xw+2.5 xw+5 xw xw-5 xw-2.5],[yw-5 yw-2.5 yw-5 yw yw+5 yw+2.5 yw+5 yw],'r')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)