77范文网 - 专业文章范例文档资料分享平台

光学拍的计算机模拟(完整)(5)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

武汉理工大学毕业设计(论文)

4.2图形用户界面的制作

从上面的界面编辑中可以看出界面的关键的控件是编辑框、文本显示框、按钮和轴控件,开始的时候要求编辑框里是空的或0,在各个控件的属性编辑框中的string中设置为空或0就可以了,根据上面的步骤和参数和属性的清单,运行上面的上面的GUI就可以得到要求的初始界面,由MATLAB figure file和MATLAB M-file组成。要实现光学拍的MATLAB仿真,在主界面的初始化程序中的MATLAB M-file中加入光学拍的MATLAB仿真程序,具体是在function pushbutton1_Callback(hObject, eventdata, handles)里面加入光学拍的MATLAB仿真代码。

在前面我们已经做过了MATLAB的仿真程序,图形用户界面的MATLAB的设计可以有两种方式实现:第一,用图形figure函数调用相关程序,实现用户界面,然而这种方法需要用函数调用且布局都要以坐标函数调用的来布局,一个地方错了要改所有的程序,可视化不好;第二,用MTALAB自带的图形用户界面设计工具guide,在目录file---new—gui就可以新建一个gui图形用户界面,这里可以根据需要来添加控件,按要求布局而且修改起来也比较简单方便,不需要更改程序,只在界面上调整和修改就可以了,可视化好且方便,初始化后在相关位置加入代码就可以实现了图形用户界面设计了。

前面的程序是用图形figure函数调用实现了光学拍的计算机仿真,但是只是实现了仿真而没有完成人机式的界面设计,而且各个参数的修改都要在程序里更改,图形也是分3个实现的不在一个界面上,现在就在以前的基础上利用MATLAB的gui图形用户界面设计工具来设计光学拍的MATLAB仿真,需要对前面的程序做一下修改[15]。

具体工作如下:

以前的程序中各变量定义为常数,现在要用变量,具体的修改方法如下为: scale1=str2double(get(handles.edit1,'String')); scale2=str2double(get(handles.edit2,'String')); scale3=str2double(get(handles.edit3,'String')); scale4=str2double(get(handles.edit4,'String')); w1=scale1; w2=scale2; k1=scale3; k2=scale4;

此前的仿真程序中我们用单独的图形函数实现,而现在要求3个输出图形分别在设计的3个轴控件窗口中显示,其方法为:将图形制作figure进行修改成轴控件函数调用对应的程序

axes(handles.axes1); axes(handles.axes2);

18

武汉理工大学毕业设计(论文)

axes(handles.axes3);

此前的设计没有对坐标轴做标注,对图形上的曲线也没有对应的标注,对个轴控件图形也没做相应的名称,现在对界面上的坐标轴标注、对坐标轴窗口命名和对各曲线做标注。其方法为:利用xlabel(‘字符串’)和ylabel(‘字符串’)分别对x和y轴标注;利用title(‘字符串’)对图形标题;利用legend(字符串1,字符串2,?.,参数)对图例注解。

通过以上的修改和代码的添加,基于MATLAB下的GUI的光学拍的仿真界面的程序为: scale1=str2double(get(handles.edit1,'String')); scale2=str2double(get(handles.edit2,'String')); scale3=str2double(get(handles.edit3,'String')); scale4=str2double(get(handles.edit4,'String')); w1=scale1; w2=scale2; k1=scale3; k2=scale4; t=0.1:0.2:1.3; a =1;x =0:0.001:5; A2= a*cos(k2*x-w2*t(end)); A1= a*cos(k1*x-w1*t(end)); axes(handles.axes1); plot(x,A1,x,A2)

set(gcf,'color',[0 1 0]); set(gca,'YTick',[-1:0.5:1]); set(gca,'XTick',[0:1:5]); xlabel('变量 X') ylabel('振幅变化 A') title('两列单色平面波') legend('wave1','wave2') axes(handles.axes2); %%plot the optical beats x =0:0.001:20;k =0;

m2= moviein(length(0.1:0.2:1.3)); for t=0.1:0.2:1.3 k = k+1;

A =2*a*cos((k1-k2)/2*x-(w1-w2)/2*t);

19

武汉理工大学毕业设计(论文)

v = a*cos(k1*x -w1*t)+a*cos(k2*x-w2*t); plot(x,v,'k-',x,A,x,-A); axis([0 20 -2 2]); set(gcf,'color',[0 1 0]) set(gca,'YTick',[-2:1:2]) set(gca,'XTick',[0:5:20]) xlabel('变量 X') ylabel('振幅变化 A') title('合成波即光学拍') legend('wave','amp1','amp2') m2(:,k) = getframe; end movie(m2,3)

axes(handles.axes3); x =0:0.001:20;

A =2*a*cos((k1-k2)/2*x-(w1-w2)/2*t(end)); l= A.*A; plot(x,l)

set(gcf,'color',[0 1 0]) set(gca,'YTick',[0:1:4]) set(gca,'XTick',[0:5:20]) xlabel('变量 X') ylabel('振幅变化 A') title('合成波光强曲线')

legend('intensity of synthesis of wave') 将此程序添加到光学拍仿真的的界面:

GUI

的初始化程序中的

function

pushbutton1_Callback(hObject, eventdata, handles)下,然后保存并运行后得到如下

20

武汉理工大学毕业设计(论文)

图10 光学拍的仿真界面

4.3仿真演示

在MATLAB中file—open中打开光学拍的仿真的界面设计的程序,Editor中的

Debug下的点击run进入光学拍的仿真的界面。在编辑框中输入参数就得到相应的输出,输入一组参数:w1=8,w2=8,k1=8,k2=8,运行后得到如下的界面:

图11 等频率等波数下的情况

21

武汉理工大学毕业设计(论文)

从中可以看出没有光学拍现象。再次输入一组数据w1=8,w2=15,k1=8,k2=15,得到如下的界面:

图 12 当光频率和波数相差很大的时候的情况

从中可以看出光学拍现象不是很明显,再次输入一组数据:w1=8,w2=9,k1=8,k2=9,得到如下的界面:

22

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库光学拍的计算机模拟(完整)(5)在线全文阅读。

光学拍的计算机模拟(完整)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/416571.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: