您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Matlab-GUI编程教程
MatlabGUI编程教程(适用于初学者)1.首先我们新建一个GUI文件:File/New/GUI如下图所示;选择BlankGUI(Default)2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下图所示;布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码;点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。functionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit1astext%str2double(get(hObject,'String'))returnscontentsofedit1asadouble然后在上面这段代码的下面插入如下代码:%以字符串的形式来存储数据文本框1的内容.如果字符串不是数字,则现实空白内容input=str2num(get(hObject,'String'));%检查输入是否为空.如果为空,则默认显示为0if(isempty(input))set(hObject,'String','0')endguidata(hObject,handles);这段代码使得输入被严格限制,我们不能试图输入一个非数字。4.为edit2_Callback添加同样一段代码5现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。用3中同样的方法在m文件中找到pushbutton1_Callback代码段如下;functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)在上面这段代码后添加以下代码;a=get(handles.edit1,'String');b=get(handles.edit2,'String');%aandbarevariablesofStringstype,andneedtobe%convertedtovariablesofNumbertypebeforetheycan%beaddedtogether%total=str2num(a)+str2num(b);c=num2str(total);%needtoconverttheanswerbackintoStringtypeto%displayitset(handles.text1,'String',c);guidata(hObject,handles);下面我们来对上面这段程序分析一下;a=get(handles.edit1,'String');b=get(handles.edit2,'String');上面这行代码把用户输入的数据存入到变量a,变量b中;%a,b是字符型变量,在计算两者相加之前需把他们转换为数字型total=str2num(a)+str2num(b);这段代码实现两数相加c=num2str(total);set(handles.text3,'String',c);guidata(hObject,handles);以上两行代码分别用来更新计算结果文本框和图形对象句柄,一般Callback回调函数都以guidata(hObject,handles);j结束以更新数据程序运行如下:如果你仍然有疑问可以留言~[知识点]:图形用户界面(GUI)--包括窗口、图标、菜单、工具条等对象的用户界面。PostedinMatlab,MatlabGUI,Matlab基础,Matlab教程|34CommentsSimulink输出指定状态变量的值Postedon2008-03-04by今天游览Doug’sPickoftheWeek的时候发现Matlab公司有一位应用工程师刚建了一个博客,此博客专门用于介绍Simulink和一些Mathworks工具基于模型的设计.这个博客也许会对正在使用Simulink的人有所帮助吧.说到Simulink,我做的第一个Simulink模型是一个曲柄滑块的仿真系统,就整个Simulink而言,其实我觉得它的出现使得我们能更加清晰的思考复杂的系统,使得整个系统内个分散繁多的元件看起来更加有条例,可以很容易的看出它们之间的存在什么样的关系.下面看看Simulink输出指定状态变量的值是如何实现的:下面是Help文件中的一个例子:ThiscommandcreatesanoptionsstructurecalledmyoptsthatdefinesvaluesfortheMaxDataPointsandRefineparameters,usingdefaultvaluesforotherparameters.myopts=simset('MaxDataPoints',100,'Refine',2);Thiscommandsimulatesthevdpmodelfor10secondsandusestheparametersdefinedinmyopts.[t,x,y]=sim('vdp',10,myopts);Seth那也有一个例子.PostedinMatlab,Matlab基础,simulink|TaggedMatlab,simulink|Leaveacomment解决自己遇到的Matlab问题Postedon2007-11-11by我在yo2上写了到目前为止10篇文章。这些文章都只涉及我所在的领域(机械或者优化方面)覆盖面有限。我希望大家可以共同来建立一个资源圈或者说是一个互帮互助的集体,大家在其中就能更好的得到帮助或找到自己需要的资料,因为很多人问过我一些问题,而我大多都帮不上他们什么,因为所在领域不同,我不可能帮一个完全不是一个专业的人解决他的建模问题。所以我想把当我遇到问题时如何查找资料和解决Matlab问题的过程和方法告诉大家:1.首先当你遇到Matlab问题时你应尽量利用软件自带的帮助文件寻求帮助(F1直接进入),有人埋怨自己的Matlab是英文版的,看不懂帮助文档,其实很多大型软件都没有汉化,再者英语地位不用多说,这个问题自己得克服。2.你可以去Matlab官方的社区去寻求帮助地址:MATLABCentral3.你可以去Matlab工作人员的官方Blog寻求帮助:ArtofMATLAB、Doug'sPickoftheWeek、ImageProcessing、MATLABDesktop等等4.在世界范围寻求帮助。很多Matlab使用者都是在自己的Blog中涉及到自己的使用体会和自己遇到的问题,你可以在他们的Blog中逛逛,说不定会收获以外。我的方法是利用GoogleReader订阅Technorati上搜索到的Matlab结果,这样可以使你在Google阅读器中就能看到大量关于Matlab相关内容的博客更新了。5.买参考资料来解决你的问题,我遇到的很多Matlab资料介绍的都比较全,但是很少有针对某一学科很详细的参考书籍市场上能找到。最后我想如果你的博客中也时常会涉及到一些Matlab的内容不如把你的Rss地址或者博客地址与大家共享一下。首先我把我的博客订阅地址共享一下:杂谈|TaggedMatlab,Matlab基础,关于,问题|Leaveacomment为GUI设置背景图片Postedon2007-11-02by方法如下:1.创建一个GUI。2.拖入一个坐标轴到工作区。3.为坐标轴加入函数,做法:在坐标轴上右击鼠标ViewCallbacks--CreateFcn.4.在函数区写入下面代码:axes(hObject)imshow('matlab.png')具体操作如下:[ratings]PostedinMatlab,MatlabGUI,Matlab图形图像,Matlab基础|TaggedGUI,Matlab,Matlab基础|5Comments把弧度转化为角度Postedon2007-09-12byMatlab绘制三角函数是以弧度作为自变量的,这也是所有高级语言采用的共同方法。下面是一个例子:在命令行中输入:x=0:pi/100:2*pi;plot(x,sin(x));可以得到0~2π区间内sinx的函数图像,可是这个图像横坐标是弧度形式。对于读者来说更希望看到的是角度表示的横坐标。下面的方法可以实现转换:图1是曲柄滑块机构的滑块位移随曲柄转角变化的曲线,可以看到横坐标是以弧度来表示的。现在我们进行转换,进入Figure编辑器——点击showplottool按钮(见图2)——点击Ticks...(见图2)——在图3界面里为弧度加上相应的角度——效果图(见图5)图1图2图3图4[ratings]PostedinMatlab,Matlab图形图像,Matlab基础|TaggedMatlab,Matlab图形图像,Matlab基础|Leaveacomment怎样将CONSTR函数转换成FMINCON函数?Postedon2007-09-04by最近发现目前还有不少期刊文献中利用Constr来求解约束优化问题,事实上当你把其文章中的那段含有Contr函数的代码在MatlabR14或者新出来的Maltab2007中运行时就会报错,根源在于Mathworks在Matlab4以后将Constr函数改成了Fmincon函数.当然,相应的格式也发生了变化.具体如何转换可以参考官方网站公布的一个例子:原CONSTRfunction调用:OPTIONS=foptions;OPTIONS(13)=2;%TwoequalityconstraintsOPTIONS(1)=1;OPTIONS(9)=1;A1=[14-3];b1=2;A2=[250];b2=9;x0=[1;.5;.8];LB=[];UB=[];[X,OPTIONS,LAMBDA,HESS]=...constr('myfuncon',x0,OPTIONS,LB,UB,'mygradcon',A1,b1,A2,b2);%myfuncon.m[F,C]=myfuncon(x,A1,b1,A2,b2)F=x(1)+0.0009*x(2)^3+sin(x(3));C(1,1)=A1*x-b;%EqualitylinearconstraintC(2,1)=3*x(1)^2-1;%EqualitynonlinearconstraintC(3,1)=A2*x-b2;%InequalitylinearconstraintC(4,1)=7*sin(x(2))-1;%Inequalitynonlinearconstraint%mygradcon.m[G,DC]=mygradcon(x,alpha)G=[1;%Gradientoftheobjective3*0.0009*x(2)^2;cos(x(3))];DC(:,1)=A1';%GradientoftheconstraintsDC(:,2)=[6*x(1);0;0];DC(:,3)=A2';DC(:,4)=[0;7*cos(x(2));0];新FMINCON调用:OPTIONS=optimset(...'Display','iter',...'GradCheck','on',...%Ch
本文标题:Matlab-GUI编程教程
链接地址:https://www.777doc.com/doc-4358317 .html