Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射

1 简介

从光的电磁理论出发构建模型,运用MATLAB软件的矩阵计算能力,动态模拟了杨氏双缝干涉实验的全过程,并生成了一个便于实验教学演示的GUI用户界面.以日光为白光光源,把日光的可见光谱均匀分割为2 000份色光,利用Matlab软件实现了白光夫琅和费不同形状矩孔衍射实验的计算机仿真,并根据仿真结果分析了衍射图像的分布特征.结果表明,白光夫琅和费矩孔衍射的仿真图像,清晰,鲜艳而逼真,中央亮斑为白色,其余条纹则内紫外红;衍射的光强分布为两个相互垂直的单缝衍射因子相互调制的结果,单缝衍射是矩孔衍射的特例.?

2 部分代码

function varargout = untitled1(varargin)

% UNTITLED1 MATLAB code for untitled1.fig

%      UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing

%      singleton*.

%

%      H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to

%      the existing singleton*.

%

%      UNTITLED1(‘CALLBACK’,hObject,eventData,handles,…) calls the local

%      function named CALLBACK in UNTITLED1.M with the given input arguments.

%

%      UNTITLED1(‘Property’,’Value’,…) creates a new UNTITLED1 or raises the

%      existing singleton*.  Starting from the left, property value pairs are

%      applied to the GUI before untitled1_OpeningFcn gets called.  An

%      unrecognized property name or invalid value makes property application

%      stop.  All inputs are passed to untitled1_OpeningFcn via varargin.

%

%      *See GUI Options on GUIDE’s Tools menu.  Choose “GUI allows only one

%      instance to run (singleton)”.

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help untitled1

% Last Modified by GUIDE v2.5 13-May-2019 12:05:52

% Begin initialization code – DO NOT EDIT

gui_Singleton = 1;

gui_State = struct(‘gui_Name’,       mfilename, …

                   ‘gui_Singleton’,  gui_Singleton, …

                   ‘gui_OpeningFcn’, @untitled1_OpeningFcn, …

                   ‘gui_OutputFcn’,  @untitled1_OutputFcn, …

                   ‘gui_LayoutFcn’,  [] , …

                   ‘gui_Callback’,   []);

if nargin && ischar(varargin{1})

    gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

    gui_mainfcn(gui_State, varargin{:});

end

% End initialization code – DO NOT EDIT

% — Executes just before untitled1 is made visible.

function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject    handle to figure

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% varargin   command line arguments to untitled1 (see VARARGIN)

% Choose default command line output for untitled1

handles.output = hObject;

axes(handles.axes1)

cData=imread(‘杨氏双缝实验.jpg’);

image(cData);

title(‘杨氏双缝干涉示意图’)

axis off;

set(handles.edit1,’String’,’建议范围200~1000nm’);

set(handles.edit2,’String’,’建议范围0.1~0.5mm’);

set(handles.edit3,’String’,’建议范围1~5m’);

set(handles.edit4,’String’,’1′);

set(handles.edit5,’String’,’1′);

% Update handles structure

guidata(hObject, handles);

% — Outputs from this function are returned to the command line.

function varargout = untitled1_OutputFcn(hObject, eventdata, handles) 

% varargout  cell array for returning output args (see VARARGOUT);

% hObject    handle to figure

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)

set(handles.slider1,’value’,str2num(get(hObject,’string’)));

% hObject    handle to edit1 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’String’) returns contents of edit1 as text

%        str2double(get(hObject,’String’)) returns contents of edit1 as a double

% — Executes during object creation, after setting all properties.

function edit1_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit1 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,’white’);

end

% — Executes on slider movement.

function slider1_Callback(hObject, eventdata, handles)

set(handles.edit1,’string’,num2str(get(hObject,’value’)));

% hObject    handle to slider1 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

la=get(handles.slider1,’value’);

set(handles.edit1,’string’,num2str(la));

% Hints: get(hObject,’Value’) returns position of slider

%        get(hObject,’Min’) and get(hObject,’Max’) to determine range of slider

% — Executes during object creation, after setting all properties.

function slider1_CreateFcn(hObject, eventdata, handles)

% hObject    handle to slider1 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,[.9 .9 .9]);

end

function edit2_Callback(hObject, eventdata, handles)

set(handles.slider2,’value’,str2num(get(hObject,’string’)));

% hObject    handle to edit2 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’String’) returns contents of edit2 as text

%        str2double(get(hObject,’String’)) returns contents of edit2 as a double

% — Executes during object creation, after setting all properties.

function edit2_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit2 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,’white’);

end

% — Executes on slider movement.

function slider2_Callback(hObject, eventdata, handles)

set(handles.edit2,’string’,num2str(get(hObject,’value’)));

% hObject    handle to slider2 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

d=get(handles.slider2,’value’);

set(handles.edit2,’string’,num2str(d));

% Hints: get(hObject,’Value’) returns position of slider

%        get(hObject,’Min’) and get(hObject,’Max’) to determine range of slider

% — Executes during object creation, after setting all properties.

function slider2_CreateFcn(hObject, eventdata, handles)

% hObject    handle to slider2 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,[.9 .9 .9]);

end

function edit3_Callback(hObject, eventdata, handles)

set(handles.slider3,’value’,str2num(get(hObject,’string’)));

% hObject    handle to edit3 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’String’) returns contents of edit3 as text

%        str2double(get(hObject,’String’)) returns contents of edit3 as a double

% — Executes during object creation, after setting all properties.

function edit3_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit3 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,’white’);

end

% — Executes on slider movement.

function slider3_Callback(hObject, eventdata, handles)

set(handles.edit3,’string’,num2str(get(hObject,’value’)));

% hObject    handle to slider3 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’Value’) returns position of slider

%        get(hObject,’Min’) and get(hObject,’Max’) to determine range of slider

D=get(handles.slider3,’value’);

set(handles.edit3,’string’,num2str(D));

% — Executes during object creation, after setting all properties.

function slider3_CreateFcn(hObject, eventdata, handles)

% hObject    handle to slider3 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,[.9 .9 .9]);

end

function edit4_Callback(hObject, eventdata, handles)

set(handles.slider4,’value’,str2num(get(hObject,’string’)));

% hObject    handle to edit4 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’String’) returns contents of edit4 as text

%        str2double(get(hObject,’String’)) returns contents of edit4 as a double

% — Executes during object creation, after setting all properties.

function edit4_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit4 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,’white’);

end

% — Executes on slider movement.

function slider4_Callback(hObject, eventdata, handles)

set(handles.edit4,’string’,num2str(get(hObject,’value’)));

% hObject    handle to slider4 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

A1=get(handles.slider1,’value’);

set(handles.edit1,’string’,num2str(A1));

% Hints: get(hObject,’Value’) returns position of slider

%        get(hObject,’Min’) and get(hObject,’Max’) to determine range of slider

% — Executes during object creation, after setting all properties.

function slider4_CreateFcn(hObject, eventdata, handles)

% hObject    handle to slider4 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,[.9 .9 .9]);

end

function edit5_Callback(hObject, eventdata, handles)

set(handles.slider5,’value’,str2num(get(hObject,’string’)));

% hObject    handle to edit5 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,’String’) returns contents of edit5 as text

%        str2double(get(hObject,’String’)) returns contents of edit5 as a double

% — Executes during object creation, after setting all properties.

function edit5_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit5 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,’white’);

end

% — Executes on slider movement.

function slider5_Callback(hObject, eventdata, handles)

set(handles.edit5,’string’,num2str(get(hObject,’value’)));

% hObject    handle to slider5 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

A2=get(handles.slider1,’value’);

set(handles.edit1,’string’,num2str(A2));

% Hints: get(hObject,’Value’) returns position of slider

%        get(hObject,’Min’) and get(hObject,’Max’) to determine range of slider

% — Executes during object creation, after setting all properties.

function slider5_CreateFcn(hObject, eventdata, handles)

% hObject    handle to slider5 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    empty – handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.

if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))

    set(hObject,’BackgroundColor’,[.9 .9 .9]);

end

% — Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton1 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

la=str2num(get(handles.edit1,’String’)).*10.^(-9);

num=str2num(get(handles.edit2,’String’));

d=num.*10.^(-3);

D=str2num(get(handles.edit3,’String’));

A1=str2num(get(handles.edit4,’String’));

A2=str2num(get(handles.edit5,’String’));

%A1=1;

%A2=1; %光源振幅

xm=0.005;%接收屏范围

ym=xm;

n=1001;

xs=linspace(-xm,xm,n);

ys=linspace(-ym,ym,n);

r1=sqrt((xs+d/2).^2+ys.^2+D.^2);

r2=sqrt((xs-d/2).^2+ys.^2+D.^2);

E1=A1./r1.*exp(1i*r1*2*pi/la);

E2=A2./r1.*exp(1i*r2*2*pi/la);

E=E1+E2;

I=abs(E).^2;

NCL=255;%确定所用灰度等级为255级

Br=(I/4)*NCL;

axes(handles.axes2)

image(xs,ys,Br);

colormap(gray(NCL));

xlabel(‘双缝干涉条纹’)

axes(handles.axes3)

plot(xs,I);

xlabel(‘干涉强度曲线’)

% — Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton3 (see GCBO)

% eventdata  reserved – to be defined in a future version of MATLAB 

% handles    structure with handles and user data (see GUIDATA)

   delete(gcf);

untitled;    

3 仿真结果

Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射

Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射

Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射

4 参考文献

[1]李喜贵, 张阳. MATLAB编程实现杨氏双缝干涉实验的计算机动态模拟[C]// 第六届全国高等学校物理实验教学研讨会. 0.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射 QQ名片 Matlab实现杨氏双缝干涉和(单缝+多缝+圆孔+矩孔)衍射

来源:Matlab科研工作室

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月8日
下一篇 2022年1月8日

相关推荐