版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学课程设计MATLAB程序设计2.1MATLAB的GUI编辑器简介矩阵实验室(MatrixLaboratory,简称MATLAB)是美国MathWorks公司出品的数学软件,主要包括两大部分:MATLAB和Simulink,可实现算法开发、工程数值计算和对动态系统进行建模、仿真等功能。主要应用于金融建模设计与分析、工程计算、图像处理、控制工程、信号处理与通信、信号检测等领域。MATLAB可以创建图形用户界面(GraphicalUserInterfaces,简称GUI),图形用户界面是指由鼠标、窗口、按键、光标、菜单、图标、对话框和文本框等各种图形对象组成的用户界面。它可以让用户自由定制与MATLAB的交互方式,而命令窗口不是唯一与MATLAB的交互方式。图形用户界面是用户和计算机之间进行交流的工具,MATLAB将所有图形用户界面支持的用户控件都集成在这个环境中并提供界面外观、属性、行为响应方式的设置方法。通过MATLAB的GUIDE编辑器进行开发图形用户界面设计,类似VisualBasic这一类的开发环境,比编程方式简单,并可将几个图形对象加到一个图形界面中,增强可视性。刚开始建立GUI时,使用GUIDE编辑GUI的速度将会比较快。用户可以直接在MATLAB的命令窗口中输入guide,或在MATLAB的start菜单选取【MTALAT】>【GUIDE(GUIBuilder)】选项或单击Desktop工具栏上的按钮,都可以打开MATLAB的GUIDE编辑器来进行界面设计。>>guide使用此编辑器能够快速地设计出GUI,并且可以省略繁琐的函数,是以对象为导向的观念,使GUI的设计更加灵活;此外,若通过MATLABCompiler编译为可执行文件或由MATLABRuntimeServer封装文件,就可以在没有MATLAB的环境下运行使用,以发挥最大效用。在MATLABR2015b中,GUIDE编辑界面如图1所示的“GUIDEQuickStart”对话框,提供了BlankGUI、ModalQuestionDialog、GUIwithAxesandMenu、GUIwithUicontrols4种样板。图2.1“GUIDEQuickStart”对话框BlankGUI样板:一个空的GUI样板,必须由用户自行加入所需要的对象,双击此选项后,在GUI编辑区内不会有任何的对象存在。ModalQuestionDialog样板:在此编辑器中已经有用户建立的一个问题对话框。GUIwithUicontrols样板:打开已经设计好的一些GUI对象的GUIDE编辑器,而在此编辑器中已经包含了由用户建立的一些具有计算功能的对象。GUIwithAxesandMenu样板:在此编辑器中也已经有一些由用户设计好的GUI对象,而这些对象主要用于计算与输出。在以上几个样板中,用户一般都是使用BlankGUI来建立GUI对象,选取完后单击ok按钮,即可打开如图2所示的GUI编辑界面。图2.2GUI编辑界面2.1.1建立GUIDE对象过程在MATLAB中打开GUI编辑界面后就可以进行GUI设计了,如图2所示的GUIDE编辑界面中,左方提供了用户可选择的uicontrol对象。用户只需通过鼠标单击左方任一uicontrol对象后,然后在GUIDE窗口内使用鼠标拖拽对象大小来放置,就可以建立好该对象。如图3所示,用户用鼠标选取PushButton对象后,直接在GUIDE窗口内拖拽该对象的大小来放置PushButton即可。EditText、StaticText的建立方式与PushButton的相同。用户建立完对象后,则在自己已经建立的对象上单击鼠标左键来选取该对象作为当前对象,即可修改各对象的大小,此时对象框的四周会显示四个黑点,即可直接用鼠标拖拽这些黑点来修改对象框的大小;同样可用鼠标选取该对象,再拖拽移动对象即可修改对象的位置;用户可以使用鼠标直接拖拽右下角的黑点来进行修改整个GUI窗口的大小。图2.3GUI的建立2.1.2修改GUI对象属性当建立完对象后,用户就可以开始修改对象的属性了,与前面介绍的方式一样,直接在该GUI对象上双击鼠标即可打开如图4所示的属性检查器,里面包含了该对象所有可设置的属性值与属性名称。假设必须将图3内的PushButton对象的字形改为粗体字,因此在该属性检查器中单击“FontWeight”右方的按钮后,选取其中的“bold”选项就可以将字体改为粗体字;另外,如果我们要更改按钮的名称,用户可以通过修改String属性,与修改FontWeight的做法相同,但由于String属性必须是输入显示的名称,因此将原本的属性值PushButton删除后再输入用户所需设计的按钮名称即可。例如本设计课题中简易计算器的GUI设计的后退按钮Backspace属性设置,如图5所示。我们发现在GUIDE中设置对象属性是比较方便的,用户仅需了解该属性的用途以及各对象间之间的关系,而不需要完整的去记整个属性的名称,并且可以直接通过交互式的界面来进行各对象属性的修改,这样可以节省很多属性设置的时间,可以很快地建立一个符合我们要求的图形界面。图2.4属性检查器图2.5修改PushButton对象属性2.1.3GUIDE中加入图案在GUIDE中加入图案,首先要在GUIDE编辑界面中建立一个Axes对象,作为图像显示的坐标轴,使用axes(句柄值)可以用来控制当前的坐标轴。在MATLAB中,一个完整的图像显示过程必须使用到几个函数,分别为imread(读取图像)、image(显示图像)、imwrite(写入图像),这样我们就可以将特定的图案显示在GUI中,来美化我们的界面(有点类似于VisualBasic内的picture对象的效果)。本设计课题中用户登录界面设计中显示的沈阳理工大学图像程序代码如下:h=imread('photo.jpg');imshow(h);2.2设计课题的GUI对象简介下面简要介绍本设计课题使用的GUIDE编辑器中对象的用途与使用方式。1.PushButtonPushButton为GUI最常使用也是最简单的对象,当用户按下PushButton时,MATLAB就会立即依据其对应的Callback程序来执行操作。以下为本设计课题登录页面的登录按钮的Callback,其Tag属性为pushbuttonenter,这个按钮主要是用来进行判断账号密码正确与否,其整个对应的Callback程序如下:z=get(handles.editaccountnumber,'string');m=get(handles.editcode,'string');z_h='shenli';m_m='123456';n=find(strcmp(z_h,{z}));if~isempty(n)&&strcmp(m_m,{m})h=msgbox('Welcome!');uiwait(h);run('two');close('one');elseerrordlg('账号或密码错误!');end2.StaticTextStaticText不同于EditText,不可以在执行中任意编辑输入值,因此StaticText主要用于制作显示框、状态信息、或其余资料(由String属性指定显示的文字),当然其显示的文字也是可以在执行中通过其他对象的Callback去编辑String属性的。例如当驱动某一对象的Callback后,会将句柄值为a的StaticText的属性改为“执行中”,该对象的Callback为set(a,’string’,’执行中’)。3.EditTextEditText主要是用来当做一个输入的接口,以便用户能够输入字符串、字符或数字,因此EditText的属性String即可作为一个有效的沟通媒介。用户可以直接在EditText的Callback中编写获取该EditText输入值的程序:get(gcbo,’string’),返回当前EditText输入的值,然后在通过userdata或global的方式,将该值传递到要使用的Callback中,不过变量较多时,会造成管理上的不便,因此习惯上直接在要使用该值的Callback中,编写获取EditText输入值的程序,如hh=findobj(‘tag’,‘abc’);ff=str2mun(get(hh,‘string’));,表示将Tag名称为abc的EditText中的输入值转换为数值后存储到ff变量中,这样就可省去变量传递的麻烦。此外,若多行输入时必须调整Max与Min的属性值是Max-Min>1,一般习惯将Max设为2。2.3设计课题的Callback函数简介在MATLAB中,我们可以对句柄图形对象设置一些响应函数,这些事件的响应函数我们称之为对象的回调函数,不同的对象对应的回调函数不同。用户可单击【M-fileEditor】按钮,则系统会自动将已建立的GUI对象存储,随后将产生*.fig(已建立的GUI文件)与*.m(用以编辑对象Callback的M文件),并且GUIDE会自动打开这个M文件,此时就可以开始编辑对象的Callback程序了。这里编写Callback的方式与GUIDE菜单编辑器的原理一样,可以直接在属性检查器的“Callback”文本框中输入要执行的MATLAB语句,不过此种方式由于文本框宽度的限制,因此输入的Callback语句也将受到限制,当用户的Callback比较短时,可以直接在“Callback”文本框中输入MATLAB语句,但当Callback较长时,将非常不适合,这时候必须通过GUIDE的M文件来编辑Callback了,使用此种做法的“Callback”文本框必须设置为默认的%automatic,当GUIDE存储后,就可以在M文件中编写Callback了,其M文件中会显示类似如下的Callback形式:functionpushbutton1_Callback(hObject,eventdata,handles)%hObject是当前对象(Callback)的句柄值;%eventdata是备用参数,目前没有定义;%handles是一个结构数组,存放了图形窗口所有对象的句柄值和用户数据。以上的Callback函数是Tag名称为pushbutton1所对应的函数,其后很多以%为首的语句都是系统自动生成的程序注释语句,可以不必理会,用户直接在其中加入要执行的程序语句即可,则当执行GUI时,若单击Tag名称为pushbutton1所对应的按钮,就会触发执行Callback下所指定的操作。3图像融合算法3.1图象融合算法的层次分类图像融合系统的算法按层次结构划分可分为信号级、像素级、特征级和决策级。信号级融合:是指合成一组传感器信号,目的是提供与原始信号形式相同但品质更高的信号。像素级图像融合:是指直接对图像中像素点进行信息综合处理的过程像素级图像融合的日的是生成一幅包含更多信息、更清晰的图像像素级图像融合属于较低层次的融合,目前,大部分研究集中在该层次上。像素层图像融合一般要求原始图像在空间上精确配准,如果图像具有小同分辨率,在融合前需作映射处理。特征级图像融合:是指从各个传感器图像中提取特征信息,并将其进行综合分析和处理的过程。提取的特征信息应是像素信息的充分表示量或充分统计量,典型的特征信息有边缘、形状、轮廓、角、纹理、相似亮度区域、相似景深区域等在进行融合处理时,所关心的主要特征信息的具体形式和内容与多传感器图像融合的应用目的/场合密切相关。决策级图像融合:是指对每个图像的特征信息进行分类、识别等处理,形成相应的结果后,进行进一步的融合过程最终的决策结果是全局最优决策。决策级融合是一种更高层次的信息融合,其结果将为各种控制或决策提供依据。3.2图像融合规则图像的融合规则(Fusionrule)是图像融合的核心,融合规则的好坏直接影响融合图像的速度和质量。Burt提出了基于像素选取的融合规则,在将原图像分解成不同分辨率图像的基础上,选取绝对值最大的像素值(或系数)作为融合后的像素值(或系数)。这是基于在不同分辨率图像中,具有较大值的像素(或系数)包含更多的图像信息。Petrovic和Xydeas提出了考虑分解层内各图像(若存在多个图像)及分解层间的相关性的像素选取融合规则。蒲恬在应用小波变换进行图像融合时,根据人类视觉系统对局部对比度敏感的特性,采用了基于对比度的像素选取融合规则。3.3图像融合方法迄今为止,数据融合方法主要是在像元级和特征级上进行的。常用的融合方法有HIS融合法、KL变换融合法、高通滤波融合法、小波变换融合法、金字塔变换融合法、样条变换融合法等。下面简要介绍其中的几种方法。1.HIS融合法HIS融合法在多传感器影象像元融合方面应用较广,例如:一低分辨率三波段图象与一高分辨率单波段图象进行
融合处理。这种方法将三个波段的低分辨率的数据通过HIS变换转换到HIS空间,同时将单波段高分辨率图象进行对比度拉伸以使其灰度的均值与方差和HIS空间中亮度分量图象一致,然后将拉伸过的高分辨率图象作为新的亮度分量代入HIS反变换到原始空间中。这样获得的高分辨率彩色图象既具有较高空间分辨率,同时又具有与影象相同的色调和饱和度,有利于目视解译和计算机识别。2.KL变换融合法KL变换融合法又称为主成分分析法。与HIS变换法类似,它将低分辨率的图象(三个波段或更多)作为输入分量进行主成分分析,而将高分辨率图象拉伸使其具有于第一主成分相同的均值和方差,然后用拉伸后的高分辨率影象代替主成分变换的第一分量进行逆变换。高空间分辨率数据与高光谱分辨率数据通过融合得到的新的数据包含了源图象的高分辨率和高光谱分辨率特征,保留了原图象的高频信息。这样,融合图象上目标细部特征更加清晰,光谱信息更加丰富。3.高通滤波融合法高通滤波融合法将高分辨率图象中的边缘信息提取出来,加入到低分辨率高光谱图象中。首先,通过高通滤波器提取高分辨率图象中的高频分量,然后将高通滤波结果加入到高光谱分辨率的图象中,形成高频特征信息突出的融合影象。4.小波变换融合法利用离散的小波变换,将N幅待融合的图象的每一幅分解成M幅子图象,然后在每一级上对来自N幅待融合图象的M幅子图象进行融合,得到该级的融合图象。在得到所有M级的融合图象后,实施逆变换得到融合结果。3.4图像融合步骤目前国内外己有大量图像融合技术的研究报道,不论应用何种技术方法,必须遵守的基本原则是两张或多张图像上对应的每一点都应对位准确。由于研究对象、目的不同,图像融合方法亦可多种多样,其主要步骤归纳如下:1.预处理:对获取的两种图像数据进行去噪、增强等处理,统一数据格式、图像大小和分辨率。对序列断层图像作三维重建和显示,根据目标特点建立数学模型;图像图像1图像2图像n融合算法融合运算新的子图像融合逆算法融合后图像子图像系数1子图像系数2子图像系数n图3.1图像融合步骤示意图2.分割目标和选择配准特征点:在二维或三维情况下,对目标物或兴趣区进行分割。选取的特点应是同一物理标记在两个图像上的对应点,该物理标记可以是人工标记,也可以是人体解剖特征点;3.利用特征点进行图像配准:可视作两个数据集间的线性或非线性变换,使变换后的两个数据集的误差达到某种准则的最小值;4.融合图像创建:配准后的两种模式的图像在同一坐标系下将各自的有用信息融合表达成二维或三维图像;5.参数提取:从融合图像中提取和测量特征参数,定性、定量分析。4设计课题界面设计、调试及程序4.1设计课题界面设计及调试4.1.1用户登录界面设计首先用MATLABGUIDE编辑器,绘制一个坐标轴、三个静态文本框、两个可编辑文本框、两个按钮、一个按钮组以及4个单选按钮。调整好各控件的大小、颜色,其布局如图4.1所示,然后双击各个控件修改其属性,单击激活按钮,生成如图4.2所示的界面,在M文件中编写各控件的Callback程序,最后调试运行。图4.1用户登录界面布局图图4.2用户登录界面4.1.2用户登录界面调试系统默认设置账号密码分别为,账号:shenli,密码:1234561.输入正确密码,输入如图4.3所示,显示如图4.4所示图4.3用户登录界面输入图4.4用户登录界面输入正确显示然后点击确定按钮跳转至菜单界面如图4.5图4.5用户菜单界面2.输入错误账号或密码,输入如图4.6所示,显示如图4.7所示图4.6用户登录界面账号或密码错误输入图4.7用户登录界面账号或密码错误输入显示4.1.3用户菜单界面设计首先用MATLABGUIDE编辑器,选择工具——菜单编辑器,设置7个主菜单栏以及适量菜单项,如图4.8、图4.9。并设置相应快捷方式,然后双击各个菜单项修改其属性,单击激活按钮,生成如图4.10所示的界面,在M文件中编写各菜单的Callback程序,最后调试运行。图4.8用户菜单界面设计a图4.9用户菜单界面设计b图4.10用户菜单界面运行显示4.1.4用户菜单界面调试用户可以点击类别——电源——图像融合(或按Ctrl+1)进入图像融合界面如图4.11图4.11图像融合界面用户也可以点击退出回到原登录页面如图4.12图4.12用户退出界面选项4.1.5图像融合界面设计首先用MATLABGUIDE编辑器,绘制三个坐标轴、三个静态文本框和五个按钮。调整好各控件的大小、颜色,其布局如图4.13所示,然后双击各个控件修改其属性,单击激活按钮,生成如图4.14所示的界面,在M文件中编写各控件的Callback程序,最后调试运行。图4.13图像融合界面布局图图4.14图像融合运行界面4.1.6图像融合界面调试用户可以点击打开图片,在电脑存储盘中选择要进行融合的图片,如图4.15、4.16所示。图4.15打开图片a图4.16打开图片b打开图片后,界面如图4.17所示图4.17打开图片后界面显示用户点击融合按钮,则左半部分、右半部分两张图片以各50%比例进行融合,若无错误则直接显示在融合后框图中,若有错误则不显示。如图4.18所示。图4.18打开图片后界面显示用户可按保存图片按钮,将融合后的图片直接保存到电脑中。如图4.19、4.20所示。图4.19保存图片a图4.20保存图片b用户使用完毕界面以后可点击退出按钮退出程序,如图4.21所示。图4.21用户退出界面选择4.2设计课题的MATLAB程序4.2.1用户登录界面的MATLAB程序用户登录界面设计的MATLAB程序见附录A4.2.2用户菜单界面的MATLAB程序用户菜单界面设计的MATLAB程序见附录B4.2.3图像融合界面的MATLAB程序图像融合故障检测界面设计的MATLAB程序见附录C结束语通过本次的MATLAB课题设计,我对MATLAB尤其是其中的GUI设计的功能有了进一步的了解,认识到了它功能的强大。在三个界面的设计过程中,我基本掌握了关于MATLAB图形用户界面的部分控件的使用方法,利用MATLAB的GUI提供的很多实用的控件,可以很方便的设计出属于自己的图形界面。在此课题设计中我曾遇到过两个问题:1、账户密码输入验证信息,验证位置不正确。解决方法是:利用按钮的callback回调函数,查找可编辑文本框中的string,对比默认设置值,即可验证。2、插入背景图片,显示错误,查找不到图片信息。经过查看资料后,发现初始化调用图片位置,必须与界面M文件和FIG文件在同一位置,MATLAB才可以查找到。同时我也掌握了关于如何在MATLAB的GUI设计中插入图片、绘制图形、编写程序等。通过将近三周的创新实验周课程设计,让我对MATLAB的编程及其界面设计有了基本的掌握,学到了很多东西。在这里我只是觉得我的动手能力还是太差了,还得加强实践能力。学习MATLAB对我的帮助很大,MATLAB在自动化工程中的应用领域越来越广,因此学习好MATLAB对于学习自动化这门专业是很重要的。参考文献[1]陈杰.MATLAB宝典.第三版.北京:电子工业大学出版社,2011,1.ChenJie.MATLABbible.Beijing:electronicindustrypress,2011,1.[2]罗华飞.MATLABGUI设计学习手记.北京航空航天大学出版社,2011,2.LuoHuafei.MATLABGUIdesignstudynotes.Beijinguniversityofaeronauticsandastronauticspress[3]张琨,高思超,毕靖.MATLAB2010从入门到精通.北京:电子工业大学出版社,2011,5.ZhangKun,GaoSichao,BiJing.MATLAB2010fromentrytothemaster.Beijing:electronicindustryuniversitypress,2011,5.[4]张平.MATLAB基础与应用[M].北京:北京航空航天大学出版社,2007.Zhangping.MATLABbasedandapplication[M].Beijing:Beijinguniversityofaeronauticsandastronauticspress,2007.[5]李显宏.MATLAB7.X界面设计与编译技巧[M].北京:电子工业出版社,2006.LiXianhong.MATLAB7.Xinterfacedesignandcompilationtechniques[M].Beijing:electronicindustrypress,2006.[6]查普曼.MATLAB编程.科学出版社.2011.4.1chapman.MATLABprogramming.Sciencepress.2011.4.1[7]范洛恩,法恩.面向计算科学与工程的MATLAB编程.清华大学出版社.2012.12.1FanLuoen,fine.MATLABforcomputingscienceandengineering,tsinghuauniversitypress.2012.12.1附录附录A:用户登录界面程序functionvarargout=untitled(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@untitled_OpeningFcn,...'gui_OutputFcn',@untitled_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handles);h=imread('photo.jpg');imshow(h);functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;functioneditaccountnumber_Callback(hObject,eventdata,handles)functioneditaccountnumber_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctioneditcode_Callback(hObject,eventdata,handles)password=GUILayout.PasswordField(password,'*');functioneditcode_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionpushbuttonenter_Callback(hObject,eventdata,handles)z=get(handles.editaccountnumber,'string');m=get(handles.editcode,'string');z_h='shenli';m_m='123456';n=find(strcmp(z_h,{z}));if~isempty(n)&&strcmp(m_m,{m})h=msgbox('Welcome!');uiwait(h);run('two');close('one');elseerrordlg('账号或密码错误!');endfunctionpushbuttonregister_Callback(hObject,eventdata,handles)functionaxes1_CreateFcn(hObject,eventdata,handles)functionpopupmenu1_Callback(hObject,eventdata,handles)functionpopupmenu1_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiontogglebutton1_Callback(hObject,eventdata,handles)functionradiobutton1_Callback(hObject,eventdata,handles)functionradiobutton2_Callback(hObject,eventdata,handles)functionradiobutton3_Callback(hObject,eventdata,handles)functionradiobuttonstudent_Callback(hObject,eventdata,handles)functionradiobuttonteacher_Callback(hObject,eventdata,handles)functionradiobuttonvisitor_Callback(hObject,eventdata,handles)functionradiobuttondepartment_Callback(hObject,eventdata,handles)functioneditcode_KeyPressFcn(hObject,eventdata,handles)functionpushbuttonenter_ButtonDownFcn(hObject,eventdata,handles)附录B:用户界面菜单程序functionvarargout=untitled2(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@untitled2_OpeningFcn,...'gui_OutputFcn',@untitled2_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctionuntitled2_OpeningFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handles);functionvarargout=untitled2_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;functionprocess_Callback(hObject,eventdata,handles)functionmethod_Callback(hObject,eventdata,handles)functionUntitled_7_Callback(hObject,eventdata,handles)functionUntitled_8_Callback(hObject,eventdata,handles)functionUntitled_9_Callback(hObject,eventdata,handles)functionhelp_Callback(hObject,eventdata,handles)functionUntitled_5_Callback(hObject,eventdata,handles)functionUntitled_6_Callback(hObject,eventdata,handles)functionpower_Callback(hObject,eventdata,handles)functionUntitled_3_Callback(hObject,eventdata,handles)functionUntitled_10_Callback(hObject,eventdata,handles)functionUntitled_11_Callback(hObject,eventdata,handles)functionUntitled_13_Callback(hObject,eventdata,handles)functionUntitled_15_Callback(hObject,eventdata,handles)functionUntitled_17_Callback(hObject,eventdata,handles)functionUntitled_18_Callback(hObject,eventdata,handles)functionUntitled_14_Callback(hObject,eventdata,handles)run('three');close('two');functionUntitled_16_Callback(hObject,eventdata,handles)functionUntitled_20_Callback(hObject,eventdata,handles)functionUntitled_21_Callback(hObject,eventdata,handles)functionUntitled_22_Callback(hObject,eventdata,handles)functionUntitled_23_Callback(hObject,eventdata,handles)functionexit_Callback(hObject,eventdata,handles)ss=questdlg('确认退出吗?','退出信息窗口!','不,我还想再看看!','是的,我要退出!','是的,我要退出!');switchsscase'是的,我要退出!'delete(handles.figure1);end附录C:图像融合故障检测界面程序functionvarargout=untitled1(varargin)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',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctionuntitled1_OpeningFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handles);functionvarargout=untitled1_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;functionpushbutton1_Callback(hObject,eventdata,handles)globalim1globalim2apple=double(im1);orange=double(im2);[mn]=size(apple);maska=[ones(m,220)zeros(m,n-220)];masko=1-maska;maska=imfilter(maska,fspecial('gaussian',20,10),'replicate','same');masko=imfilter(masko,fspecial('gaussian',20,10),'replicate','same');re=maska.*apple+masko.*orange;axes(handles.axes4);imshow(re,[]);functionUntitled_1_Callback(hObject,eventdata,handles)functionpushbutton2_Callback(hObject,eventdata,handles)[filenamepathname]=uiputfile('F:\*.jpg','保存图片');str=[pathnamefilename];strBefore=str(1:end-4);strEx=str(end-3:end);figure('visible','off');strcmp(strEx,'.jpg')fullName=[strBefore,'.jpg'];h=get(handles.axes4,'children');figure('visible','off');axes;copyobj(h,gca)print(gcf,'-dmeta',fullName)functionpushbuttonexit_Callback(hObject,eventdata,handles)ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!');switchsscase'是的,我要退出!'delete(handles.figure1);endfunctionpushbuttonopen1_Callback(hObject,eventdata,handles)globalim1[filenamepathname]=uigetfile('F:\*.jpg','选择一张图片');str=[pathnamefilename];im1=imread(str);axes(handles.axes2);imshow(im1);functionpushbuttonopen2_Callback(hObject,eventdata,handles)globalim2[filenamepathname]=uigetfile('F:\*.jpg','选择一张图片');str=[pathnamefilename];im2=imread(str);axes(handles.axes3);imshow(im2);基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 回迁房买卖合同版怎么理解
- 标准摩托车转让协议合同范本
- 技术升级与改善服务合同
- 购销合同中的供应链金融服务风险控制
- 仓储代表合同协议案例
- 解除劳务合同协议
- 深入解析采购订单与采购合同
- 精酿啤酒代理权协议
- 保密协议与数据安全示例
- 电力供应安全承诺书
- 采购部年终总结计划PPT模板
- 智能交互式无纸化会议系统设计方案
- 机械制造工艺学课程设计
- 《结构化学》(1-5章)习题
- 配电箱安装施工方案
- 湘少版英语四年级上册Unit12Petercanjumphigh单元测试题(含答案及)
- 早产儿知情同意书
- 手术质量与安全监测分析制度
- 2020年事业单位招聘考试《气象专业基础知识》真题库及答案1000题
- 模型构建的原则和主要步骤
- 建筑装饰施工组织与管理教学大纲
评论
0/150
提交评论