




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3、GUI中h0bject和handles的区 7、坐标轴标注刻度、网格、文字方 8 中对uitable的操作:调节各列宽度,设定某列是可编辑 10、要将 语言编写的函数文件编译成可独立执行的*.exe文 11 GUI程序转换成exe可执行文 15、 中对信号进行FFT变 21、如何得到 29、GUItimer定时 、 41 GUI中利用定时器制作动画- 42 如何从GUI中返回参数- 43 中GUI子程序的参数传递- 45 鼠标控制的两个GUI例子(附代码 52、如何在GUI里得一个axes实现双Y坐标 56、如何在GUI指定的axes中再画一个 81、如何利用ode45解方 83、方程为:exp(-x)=cos(x),用迭代法求出最小的正根,当相对误差<=10e-6时,求 86、想产生如下的矩阵:6行10列,每行都是12345678910 、生 678随机出现大小为20X20的矩阵 101、在三维图中只显示x,y轴,不显示z 三维图中显示z坐标轴的极大极小 figure按 中y=1\x围绕y轴旋转形成的旋转曲 1、GUI新手之——教你读懂GUI的M文件M文件包括了运行你整个界面程序所需要的全部代码,包括所有GUI组件的,关于子程序 function[avg,med]=newstats(u)%Primary%NEWSTATSFindmeanandmedianwithinternalfunctions.n=length(u);avg=mean(u,n);med=median(u,n);functiona=mean(v, %%Calculateaverage.a=sum(v)/n;functionm=median(v, %%Calculatemedian.w=sort(v);ifrem(n,2)==m=w((n+1)/2);m=(w(n/2)+w(n/2+1))/2;functionvarargout= 上面这个一样的道理。只不过是M文件的类似avg=mean(u,n);med=median(u,n);这两句话系统隐藏(就当它是隐藏好了)起来了,它会在你点击鼠标(或者响应操作)callback函数。所以你只用一、M文件的数据管理模式SharingDatawiththeHandlesStructurehandles这个东西共handleshandles),不用管GUI的所有数据,比如说控件的信息,而且这个缸在各个控件的callback之间传来传去,理所当然那每个控件的callback都可以放入一些想放入的数据,也可以从里面取出任何想要的数据包X1=按钮点击而变换之类,或者你想让按钮A点一下,字符B跳一下,也行。)all_choices是随便取的变量名,my_ all_choices=get(handles.my_ ,'String');current_choice=all_choices{get(handles.my_ 这样current_choice就得到了用户界面操作中, 所以,要什么信息,直接用handles.你的对象就行了。handles.你的对象就行了。二、M-File里的各个函数代表什么意思OpeningfunctionGUI开始运行但是还不可见Outputfunction如果有需要,可以向命令行输出数据。(这个函数我没 件名下的callback就会执行一次。handlesGUI界面guidata(hObject, 进行保存,否则修改无效三、Opnning (hObject,eventdata,handles,另外两个输入参数eventdata是 不用管它。varargin它里面保存了,传进来令行。my_gui('Position',[71.844.974.8就保存在varargin里面。也就是vararging{1}='路人甲'四、OutputOutputfunction functionvarargout= (hObject,eventdata,%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;去的数据,其实是放在vararout这个变量里面的。但是在别的控件的参数里并没有vararout这个变量给它用。所以只能间接修改handles.output这个变量。(guidata(hObject,是修改了vararout。 varargin里面去。 uiwait(handles.figure1);uiresume合用。五、Callbacks回调函数2、GUI程序中改变currentdirectory引起的问fig和m文件和见下,主要是用来导入数据(用于导入两个文件夹中的txt文件,每个txt有两列,第一列时间,第二列电压),运行后发现只能点击一个???Undefinedfunctionormethod'fenbianlv1'forinputargumentsoftype'struct'.Errorin==>ect,eventdata,guidata(hObject))???ErrorwhileevaluatinguicontrolCallback应该是某个地方设置的问题。on里面的函数体好像没问题。就算在第二个函数体里面只编写一个很简单的赋值语句也会出现同样的错误,调试发onpushbutton后再点击第二pushbutton它就找不到这第二pushbuttoncallback函数了。但如果两pushbutton都编写简单的赋值语句发现没有错误,说明第一个pushbuttoncallback函数体代码对第二个pushbutton的callback调用产生了影响,但是是什么地方影响了一直发现不解决办法:3、GUIh0bjecthandles的区别刚学GUI,举个例子,就是Pop_up s吧,他的回调函数是这样的:function=pushbutton1_Callback(hObject,eventdata,handles)然后问的是:Val=get(h0bject,'Value')和是一样的,那h0bject和handles在使用时有什么区别?答在GUI中,数据分两种:GUIdataapplicationdata数据的存取机制是相同的,但是GUIdata使用起来比较方便。每一个GUI图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构,这个数据结构中容纳图形界面内所有控件(钮、列表框、编辑框等)的句柄,相当于一个大的“容器”,里面存放了figure内所有控件的句柄。同时,handles结构也可以被figure内所有控件的回调函数内可以把数据到handles结构中。句柄的方式不同而已:hObject是调用回调函数时直接传过来的,handles.edit是从handles结构中取得的。但是,在控件的 控件还没被创建,其句柄还没有加入到handles结构中。4、handles结构中句柄和对象的关联问题1、问题handles=axes1:>>???Referencetonon-existentfield问题症结:delete(handles.axes1)handles.axes1句柄相关联的对get(handles.axes,'tag')???Referencetonon-existentfield2、问题%CreatefiguretouseasGUIinyourmainfunctionorafigure_handle=%createstructureofhandlesmyhandles=guihandles(figure_handle);myhandles.numberOfErrors=0;%Savethestructure答这就是GUI里面的句柄和包含句柄的结构之间的区别。myhandles=guihandles(figure_handle);与GUI有关的一切数据。figure_handle相关联的myhandles结构。5 利用定时器连续显示的问题出在哪里。以下是图像的代码:globalfilename1;globalpathname1;globalindex1;global解决办法: 见的。这也可能是imshow和image函数在处理这一问题上的不同吧。注意:类似的问题以前在中也有会员提出过:如何把波形绘制到指定的坐标轴上?于2007-11-2111:27g=serial('COM1');g.InputBufferSize=4096;g.BaudRate= Mode'byte'中断触发事件为‘bytes-availableEvent‘? @instrcallback得到回调函数句柄回调函数instrcallback的绘制波形部分程序如下:taxes(Ch1_Dis);%Ch1_Dis1holdon holdon holdon建一窗口figure1,将波形绘制到另建的窗口中。当不通过串口触发回调函数,而是在一按钮的回调函数中调 时,就会把波形绘制到指定坐标轴中。、GUI中实现在任意位置上标注gtextdisplaysatextstringinthecurrentfigurewindowafteryouselectalocationwiththemouse.gtext('string')waitsforyoutopressamousebuttonorkeyboardkeywhilethepointeriswithinafigurewindow.attheselectedlocation.、使edit的另外一种6 如何实现图像的任意裁减使用imrect和imcrop函数相结合,就可以实现截图功能。用imcrop函数,例如:I=I2=imcrop(I,[6040100figure,imshow(I)剪取图像的中间区域:裁剪图像中间的部分,就是去掉图像周围部分rect=[x0-a/2y0-b/2ab]7、坐标轴标注刻度、网格、文字方向1、用set(AX,'XMin 2、(1)控制坐标轴尺度长度:set(gca,'XLim',[-pi/2pi]) 4、将坐标的x轴做成104次方,而不是10000这种形式。set(gca,'xlim',[0 中对uitable的操作:调节各列宽度,设定某列是可编辑的f=figure('Position',[100100400dat{6.125,456.3457, columnname {'Rate columnformatnumeric'bank'numeric'各列的数据类columneditable[falsefalsetrue t=uitable('Units','normalized','Position',...[0.9],'Data',dat,...'ColumnName',columnname,...'ColumnFormat',columnformat,... 下编写的GUI转成独立于 平台下也可打开。用的GUI文件见:单纯形法实现(GUIbased Build 语言编写的函数文件编译成可独立执行的*.exe文件 脱离Matalab环境的执行程序),首先要安装和配置好 的配置,方法是在命令窗口输入:Mbuild前VC++8.0(我计算机安装的就是VC+,也可选择Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的自带的Lcc编译器)。将M文件编译为独立可执行文件的语法是:>>mcc–mfun1.m\701\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上(7.0以前的版本是其次是要将―MCRinstaller.exe安装 然后将上述路径到里面就可以了。第三步是将编译生成的相相关文件拷贝到同 如果你的程序还附带有(如Version上的图标)、Web页面(如 component--packagecomponent就实现了打此时comtest\distrib文件夹里看,生成的comtest.exe就是打包后的解压程序,双击它会解压出一些文件,再点击解压出来的_install.bat就可以实现安装1 mcc-Bsgl器 将mglinstallar.exe,然后选择解压,将在指定下解压缩出bintoolbox两子,其中在bin\win32下就是数学库和图形库脱离37个。可以将这些.dllsystem32,也可以直接放在应用程序下。而toolbox 灵梦捕手 1、安装编译器。可有多种选择,本机安装的是 visualc++6.0;2、设置编译器。在命令行输入mbuild-setup,选择安装的c编译器;3、调用编译器。输入mcc-mfilaname,filaname为要转成exe的m文件;在以前的版本中,用编译命令mcc-Bsglcppfilaname;自2006的版本后,替换为mcc-mfilaname;4、安装7\toolbox\compiler\deploy\win32下MCR是由400M的对于用不同版本生成的exe文件,MCR版本也会有不因此,在程序打包最好将相应版本的MCR一起打包。MCR环境的设置文件存放如下: 文件名为在其它机器上运行exe文件前,首先安装 11 GUI程序转换成exe可执行文设置编译器: 方法是在命令窗口输入: 将编译为可执行文件:如项目文件包含:gui.m,gui.gif,fun1.m在此路径下命令行输入:mccmgui.m 离环境运行必需的文件。在未安 的机器上运行可执行程序。 去除独立可执行程序运行时的“DOS黑窗口”matlba命令行输入cd(prefdir)edit此时compopts.bat打开,在文件最后添加:setLINKFLAGS=%LINKFLAGS%-subsystem
VisualsetLINKFLAGS=%LINKFLAGS%setLINKFLAGS=%LINKFLAGS%-遇到某些函数不能使用的问题。程序中用到vpa函数,运行gui.exe出现:undefinedmethodorfunction'vpa'forinputargumenttypeof'double'错误提示。而gui.m在 12、gui生成独立的应用程序的发布问题―MCRInstaller.exe文件、file.ctf文件和file.exe文件打包,粘贴至目标机器MCRInstaller.exefile.exefile.ctf到应用下,添加<mcr_root>\runtime\win32到用户系统路径这就话中―将file.exe和file.ctf到应用 <mcr_root>\runtime\win32到用户系统路径(<mcr_root>为MCR安装路径。)‖怎样添加目标到用户系统路径。 13、GUI控制模块及参数的综合实例!现在将我在学习过程中对于GUI控制时遇到过的一些功能做成一个综合实例放在这里,打个包希望给大家省点钱,也希望能够帮助到里需要GUIand.rar(14.882、演示了togglebutton、pushbutton对 3、演示了Edittext和slider的联合使用,及利用edittext和slider对参数的动态修改; 管理员:―会员RayneZ提醒:该帖子的楼主贴了一个GUI+ 、在axes显示图像后,在图像上单击鼠标时,回调函数的定义规则和使用方解决办法:在你的GUI的 AN0001.jpg');%图 ',{@myCallback,5}设置图像对function 因为图像显示后你点击的是图像,所以axes的那个 关于自定义的callback的参数传递方法有:CallbackFunction functionmyfile set(h,' event,arg1,arg2)event,arg1,arg2)
set(h,' set(h, {'myfile',5, {@myfile,5,(另外有用的代码iptsetpref('ImshowAxesVisible','on');%显示坐标轴set(zoom,'Direction','In','Enable','on');%显示放大图标 14、如何在循环中加入waitbar,并在waitbar上添加„取消‟按钮h=waitbar(0.0,'Pleaseset(h,'Name','optionalwindowname');forwaitbar(i/1000,h,['Update'num2str(i)]);ifstop%dostuff效果如下:另:waitbar 如何设置对循环过程加了一个waitbar同时加了一个Cancel按钮这个按钮可以中止循环但是要是在waitbar上点击关闭按钮,却会出现没有找 的 并且让他和cancel按钮起一样的作用这个怎么实现?解决方法: 实现的,因为每次执行(点X)这 %%User-definedcloserequest%todisplayaquestiondialogselection=questdlg('CloseSpecified'CloseRequestFunction',...case'Yes',case'No' 15、在中对信号进行FFT变%%---Executesonbuttonpressinfunctionfft_Callback(hObject,eventdata,globalpathnamefilenamesfnfftoutfileH1fid=fopen([pathname5.gridgrid%grid30.%h=%%handles
handletofft(seestructurewithhandlesanduserdatasubplot(211),hline=plot(sin(1:10));subplot(212),plot(sin(1:100));界面function%Showthecoordinatesofaplot%%Tostart%%wherehisahandletoafigure,axesore.g.%%Todelete%%wherehisahandletoafigure,axesore.g.%(youmayalsouse:dynpoint%%Therecanonlybeonedynamicplotterinafigureata%%%subplot(211),hline=%subplot(212),%%arg=gcf;handle=arg;arg='init';switchargif~ishandle(handle)error('hisnotahandle')[h,ax]=%deleteolddynamictextht=findobj(h,'tag',[mfilename'_text']);ifany(ht)%textwindowatthebottomleft%textincentred'pos',[1010100%dothedynamic ',[mfilename'caseht=findobj(gcbf,'tag',[mfilename'_text']);ax=overobj('axes');ifax=get(ht,'userdata');p=get(ax,'currentpoint');set(ht,'string',sprintf('%g%g',p(1),p(3)));caseh=gcf;[h,ax]= ht=findobj(h,'tag',[mfilename'_text']);%functiontyp=get(handle,'type');ifstrcmp(typ,'figure')h=handle;ax=elseifstrcmp(typ,'axes')h=get(handle,'parent');ax=handle;elseifstrcmp(get(get(handle,'parent'),'type'),'axes')ax=get(handle,'parent');h=get(ax,'parent');17、在GUI界面的打开按钮中,如何对文件进行有3个同时被使用,数据才能起作用。现在的是如何在同一个文件夹里搜索到另外两个文件解决方法:filesdir(fileDirfilesforif(strcmp(files(i).name,fileName)==1)fullFileName=[fileDir'\'fileName];disp('Findthefile!');disp('Cannotfindsuchfile');2、%2.打开'*.*','所有文件(*.*)'},...'Pickanimage');axes(handles.axes1);%axesaxes1;fpath=[pathnamefilename];%将文件名和名组成一个完整的路径;imshow在axes1轴上显示%3.在上面打开下的txt文件内容。file=ls([pathname,'\*.txt']);%文件名fori=1:size(file,1)filepath{i}=strcat(pathname,'\',file(i,form=1:length(filepath)fori=1:(size(a,1)-2)a{i}(~((a{i}>='0'&a{i}<='9')|{'*.dat','Data'Pickandat');18 不同控件之间的数据传递问题本人做了4button用于4个矩阵文件,第五个button用于把前button的数据写到一个矩阵中去。本人想实现若只输入前3button的数据4button不导入任何数据,如何实现第5button能把前3个button的数据也写到一个矩阵中去。以下是本人编的的条件语句,不好使啊!说明一下数据传递用的guidata型。A=[abc];A=[abc解决方法: 中初始化矩阵d为空矩阵;ifA=[abA=[abcd];当不按按钮5时,d为空矩阵,则输出前三个矩阵;当按了按钮5时,d被赋值,不为空,则输出a,b,c,d四个矩阵。19editbox里输入相关数据后,直接按回车键,不用鼠标点击就可以直接执请教:让pushbutton执行一个程序的simulation,在界面得所有editbox里输入相关数据后,想要直接按回车键不用鼠标点击pushbutton就可以直接执行,该怎么编辑pushbuttoncallback呀解决方法:设置控件的taborder。程序运行后,用tab键选定pushbutton,直接按"空格键",不用点击pushbutton就可以;在最后的edit控件的callback函数内加入执行simulation令,最后的edit控件输入完成后直接按'回车键'就可以运行simulation;或者调用button按钮的callback也行。 根据你的意思,你是不想用鼠标点button按钮,按enter就执行GUI使用editbox输入数据后如何自动清除数据"Enter"确认.现在问题就是输入好数据,按了Enter之后,editbox里面的数据还在,下次再输入的时候就要先删除后再输入,问一下有没有什么办能够让按了Enter键之后,editbox里面的数据就会清除掉,这样下次再输入在enter按钮的回调函数里加入如下代码处理即可:20GUI中,计算结果怎么excel来保存到指定的文件夹中问题:GUIEXCEL来保存到指定的文件夹。说明:根据上的例子做了个GUI界面,结果可以保存到EXCEL里面,但保例如:要把‘第一行’、‘第二行’、‘第三行’分别添加到excel表格的三M={„第一行‟,‟第二行‟,‟第三行‟};%定义为cell类型结果[filename,pathname]uiputfile('*.xls保存计算结果');iffilename==0%取消xlswrite(filename,{'X取值:'},'sheet1','A1');[filename,pathname]uiputfile('*.xls保存计算结果');iffilename==0%取消21、如何得到 选项中最后一个字符串的VALUE在popup 1,'String');%先得到存放菜单项的cell列表 {end};%得到最后菜单项的字符串 val=size(str,1)最后一行所处行数22、回调函数互相调用的问题解决方法:functionpushbutton1_Callback(hObject,eventdata,% handletomybutton(see% -tobedefinedinafutureversion%handles pushbutton2_Callback(hObject,eventdata,handles);%---Executesduringobjectcreation,aftersettingallfunctionpushbutton2_Callback(hObject,eventdata,% handletomybutton(see% -tobedefinedinafutureversion%handles empty-handlesnotcreateduntilafterallscalledstring和number相互转换的问题问题出现在:23、这样的功能的pushbutton的callback怎么写呀,谢谢了当两者都符合要求的时候执行相关令这样的pushbutton的callback怎ifisempty(a)||isempty(b)||isempty(c)switchstr1{val1}caseifisempty(a)||isempty(b)||case2、当在axes使用subplot画多个图时,如何清空,达到可以重复绘制图 第二个问题稍微麻烦点,有人可能会说用cla/clareset,这个时候cla/clareset只能清除最后一个subplot对应的图,其他的不能清除,举个例子说一下代码 globalh1h2;if ifishandle(h2)%h2ifaxes('parent',handles.uipanel1)%25、退出GUI时如何把全局变量中的值清空?img还是最后处理后的图像,怎么在退出程序时把img清空呢?clear26、从串口接受数据时,如何把波形绘制到指定的坐标轴上?g=serial('COM1');g.InputBufferSize=4096;g.BaudRate= Mode'byte'中断触发事件为‘bytes-availableEvent‘? @instrcallback得到回调函数句柄回调函数instrcallback的绘制波形部分程序如下:taxes(Ch1_Dis);%Ch1_Dis1holdon holdon holdon会另建一窗口figure1,将波形绘制到另建的窗口中。问问题的症结所在:自身的原因27、两个GUI之间如何传递数据GUIGUIGUI界面的菜单里面加入一个按钮这个按钮的作用是设置绘制这个图形的参数就需要再打开一个GUI界面和主界面进行关联请问这需要解决方法:为全域变量将欲传递的变量在传递双方的Callback位置中都设为全域变量,就可以在任一方的Callback中调用。使用说明:global传递变量的方式为当前有一组运算数据A必须在Tag名称为Pushbutton1与Pushbutton2所对应的对象Callback中使用,因此必须在双方的Callback中都设置这个数据A为全域变量。这样通过全域变量的,数据A就可以Pushbutton1与Pushbutton2这两个Callback的变量了。应用对象的UserData属性需要的值为Value,则输入以下程序:若要取回该变量就可以通过以下方式在任一Callback中获取该数据值:应用setappdata,getappdata,rmappdata函数 会自动设置Name与value。ASSIGNINAssignvariableinASSIGNIN(WS,'name',V)assignsthevariable'name'intheworkspaceWSthevalueV.WScanbeoneof'caller'EVALINEvaluateexpressioninEVALIN(WS,'expression')evaluates'expression'inthecontextoftheworkspaceWS.WScanbe'caller'or'base'.ItissimilartoEVALevaluated[X,Y,Z,...]=EVALIN(WS,'expression')returnsoutputargumentsfromthe则传入时 %data是workplace中的变figure2a2=evalin('base','data');%a2figure2中的几个有用的帖子引自版主回复的一个帖子 = 句柄相关联的handles结构,从而对不同GUI的控件进行操作。2、有两GUIGUI1GUI2GUI1中可以操GUI2的坐标轴,绘制曲线;同样,在GUI2中可以操作GUI1的坐标轴,绘制曲线。题目:利用GUI的输入输出参数实现不同GUI之间数据的传递 有两个GUI程序,GUI1和GUI2,在GUI1中调用一副并显示,然后点击按钮‗gui1->gui2‘,在gui2中显示该。在gui2中完成的剪切,并把剪切后的在GUI1中显示出来。题目 多个窗口之间传递参数的问 题目:不同GUI之间控件的互相操作及数值的设 的句柄相关联的handles结构,从而对不同GUI的控件进行操作。曲线;同样,在GUI2中可以操作GUI1的坐标轴,绘制曲线。 7)共享变量的方法nested函数。、GUI之间互相调用和关闭问题假设在GUI1的按钮的回调函数里调用GUI2:hGUI2=GUI2(hGUI2GUI2对象的句柄29、GUItimer定时这是显示时间的一段定时器代码,注释是写的,希望大牛帮小弟看看t=timer(' ',{@timerCallback,handles.edit1},'ExecutionMode','fixedDelay','Period',1.0);%创建timer对 传递参数handles.edit1,后面的很好理解,不再赘述。set(handles.figure1,' ',{ ,t});%设置figure1窗口关闭的回调函数其中' ,传递参数是t。start(t);functiontimerCallback(obj,event,hEdit) timer对象set(hEdit,'String',datestr(now,'HH:MM:SS')); (hObject,eventdata,t) t=timer(' ',{@timerCallback,handles.edit1},'ExecutionMode','fixedDelay','Period',1.0);functiontimerCallback(obj,event,hEdit)set(hEdit,'String',datestr(now,在开始的回调函数中增解决方法: ode','fixedDelay','Period',1.0);在各个callbacks之间传递它的handles(另外两个忽略)。functiontimercallback(obj,event,handles)set(handles.edit1'String'datestr(now'HH:MM:SS'));30、如何在循环中加入解决方法:h=waitbar(0.0,'Pleaseset(h,'Name','optionalwindowname');forwaitbar(i/1000,h,['Update'num2str(i)]);ifstopbreak;end%dostuffifexist('h')delete(h);31、如何连续读入割,就是只按一下button然后系统就自动逐个处理。并且在处理完了把这些files所以你就写一个forloopfiles=dir('test/*.jpg');[rowcol]=size(files);forj=1:rowim2='你图像处理程序'%处理图像imwrite(im2,str);%写32、如何把此次输入的值保存为下一次初始化的值解决方法:33 关于解决自动保存gcf的问具体问题:使用rectangle做矩形后,如果想用imwrite保存图像,由于没有代码:clc;closeall;I=imread('westconcordaerial.png');fg=figure;set(fg,'name',set(fg,'NumberTitle','off');old_units=get(fg,'Units');set(fg,'Units','pixels');figpos=get(fg,'Position');pos=get(fg,'Position');set(fg,'Position',[pos(1)pos(2)size(I,2)size(I,1)]);set(fg,'Units',old_units);old_units=get(gca,'Units');set(gca,'Units','pixels');set(gca,'position',[00size(I,2)size(I,1)]);set(gca,'Units',old_units);flag=1;rectn=0;whileflag==1[a,b,flag]=ginput(1);ifflag==1
size(I,1)/15,size(I,'LineWidth',3,'edgecolor','r');rectn=rectn+1;str=sprintf('YouPlot%drectangle!',rectn);helpdlg(str,'report');f=getframe(gca); %Capturescreenshot[im,map]=frame2im(f); %Returnassociatedimagedataifisempty(map) %Truecolorsystemrgb= %Indexedrgb=ind2rgb(im,map); %Convertimagedatastr=sprintf('%drect.png',rectn);imwrite(rgb,str);、 里面如何excel里面的数据或者写入数(1)数globalchuizhifashetuilishuju;[filenamepathname]=uigetfile({'*.xls'},'Choosethefile');str=[pathnamefilename];写入数据把一个字符串写入电子表格,格式如下:'第i组'. '],'a1:a1'),结果在电子表格中只能看到一个',如何能够在电子表格中显示要的结果:'第2组'',。解决办法:str=sprintf('第%d组',i);或者组就可以了。用mat2cell函数。>>d=>>suc=xlswrite('test_data',d,'sheet1','A1')suc=1、在excel中连续输入数据。特定的一行。因为在range方面,我不熟悉,书上给的例子是'A1:C1',也就是限制死了范围,变成变量n的格式不会掌握,所以格式老是错误。运行,这个问题能解决吗?[bymakesure5]% handletopushbutton1(see% -tobedefinedinafutureversion%handles structurewithhandlesanduserdata(seeGUIDATA)name=sex=get(handles.sex,'string');age=get(handles.age,'string');data={name,sex,age};,% handletopushbutton2(see% -tobedefinedinafutureversion%handles structurewithhandlesanduserdata(seeGUIDATA)%---Executesduringobjectcreation,aftersettingallproperties.functionu (hObjecteventdatahandles)%uitable初始化% handletouitable1(see% -tobedefinedinafutureversion%handles empty-handlesnotcreateduntilafterall 效果图:35、GUI不同控件之间的数据传递问本人做了4button用于打开4个矩阵文件,第五个button用于把前四个button的数据写到一个矩阵中去。本人想实现若只输入前3button的数据,A=[abc];A=[abc解决方法: A=[abc];A=[abcd];不为空,则输出a,b,c,d四个矩阵。36、怎么统计一个十进制数中"0"的个数??求助!有自然数1~2006中"0"的总个数。方法1:方法2:clc;zero1=0;zero2=forx=1:str1=str2=sprintf('%d',
zeros1=length(strfind(str1,'0'));zeros2=length(strfind(str2,'0'));zero1=zero1+zeros1;zero2=zero2+fprintf('\nUsenum2str,thenumberis:%d\n',zero1);fprintf('\nUsesprintf,thenumberis:%d\n', 问题说明:在我设计GUI界面中,我用菜单设回调函数listbox里打1个名每项都是名称,格式为―.jpg‖) [str1]=strread(str,'%s');Ben(1)=str1;Counter=2;globalbianhao;[namebian]=strread(str,'%s%s','delimiter','');eventdata,handles)添加了如下代码:globalbianhao;ImageYePian=imread('a');%读彩像运行出现错误???Errorusing==>imreadFile"a"doesnotexist. 在callback中用以下代码即可实现:keyget(handles.figure1,'CurrentKey'取得当前按键的名称,return、space...switchcasecase 或者switchkeycase39、GUI如何响应鼠标事件l在滑鼠按钮被按下时,设定 l在滑鼠按钮被时,清除 l按下滑鼠时, 指令视窗会出现「Mousedown!」的l按下并移动滑鼠时, 指令视窗印出「Mouseismoving!」及当时滑鼠的位置.l滑鼠时, 指令视窗会出现「Mouseup!」的讯息.functiontmouse(action)TMOUSEHandleGraphics来设定滑鼠事件ifnargin==0action='start';caseaxis([0101]);boxon;title('Clickanddragyourmouseinthis%设定滑鼠按钮被按下时的反应指令为「tmousedown」set(gcf,'Wi ','tmousedown');case设定滑鼠移动时的反应指令为「tmousemoveset(gcf, ','tmouse%设定滑鼠按钮被时的反应指令为「tmouseup」set(gcf,' ','tmouseup');%列印「Mousedown!」讯息casecurrPt=get(gca,'CurrentPoint');x=currPt(1,1);y=line(x,y,'marker','.','EraseMode',列印「Mouseismoving!fprintf('Mouseismoving!Currentlocation=(%g,%g)\n',currPt(1,1),currPt(1,2));%滑鼠按钮被时的反应指caseset(gcf, ',%清除滑鼠按钮被时的反应指set(gcf, ',%列印「Mouseup!」讯息40 截图、图像处 双击打开7.0→File→New→GUI→单击,调整axes1大小→单击OK,调整按钮大小和颜色,修改名称→axes2→OK,调整按钮大小和颜色,修改名称→保存→View→M-fileEdit→写程序functionopen_Callback(hObject,eventdata,handles)后面输 guidata(hObject,handles); functionsave_Callback(hObject,eventdata,handles)后面输 functionliangdu_Callback(hObjecteventdata,handles)后y=imadjust(x,[0.150.9],[01]); functionhuidu_Callback(hObjecteventdata,handles)后面 functioncut_Callback(hObject,eventdata,handles)后面输入 functiondoublesuoxiao_Callback(hObjecteventdata,handles)后面输入如下程序 %axis([02550functionjunheng_Callback(hObjecteventdata,handles)后 functiongaussian_Callback(hObjecteventdata,handles)后 functionsalt_Callback(hObject,eventdata,handles)后面输y=imnoise(x,'salt&pepper',0.04); functionmedfilt_Callback(hObjecteventdata,handles)后y=imnoise(x,'salt&pepper',0.04); z=medfilt2(y,[55],'symmetric'); functionwiener_Callback(hObjecteventdata,handles)后面 z=wiener2(y,[55]); functionpinputu_Callback(hObjecteventdata,handles)后 title('频谱图'); functionbutterdi_Callback(hObjecteventdata,handles)后y1=imnoise(x,'salt& %数据类型转换, %变 fori=1:Mfor
%加噪 % %变 fori=1:Mfor
if
像41 GUI中利用定时器制作动画- :时请以超形式标明文章原始出处和作者信息及本 /logs/17282262.html中提供了一些动态显示图形的例子,例如vibes、等,但他们的程序结构都和由GUIDE产生的M文件的结构不同。中用while循环来更新图形窗口,pause函数来控制更新的速度。这样的结构是不适合放在某一个子函数中来执行的,否则程序在执行该子函数时无法响应用户的其它操作,只能一开始就设置终止条件,等待动画的自然结束。中的定时器timer数,可以据此来实现绘图的自动更新,而不会影响整个GUI对用户其它操作的响应。比如要让一个曲面随时间周期性地变形,类似vibes中的情形按下―开始‖按钮后,曲面开始周期振动,同时可以调整振幅大小、周期的长短。所不同的是一切都在子函数中完成。GUIDE中建立界面元素后,在―开始‖按钮的callback中建立一个定时器timer对象object Period是触发的周期,这里设置为0.05s,ExecutionMode是执行的方式,可以有三种选择,对于不需要精确控制时序的动画的影响不大,指定触发时所执行函数的句柄,在这里建立一个函数PlotUpdate来执行绘图命令,handles作为参数传递到中去。注意PlotUpdate的定义:function前两个参数是必不可少的,最后的handles才是用户传递的数据。在这个函数中你基本上可以无视前两个参数,按照曲面的运动趋势产生新的顶点坐标,然后用set命令将新的坐标赋给曲面(面片patch)对象的Vertices属性。drawnow更新就可以了。你可以用曲面对象的属性存放当前振动的幅值相位等参数。然后在停止‖按钮的callback中st(handles.timer停止定时器,就可以停止自动绘图了。在―增大振幅‖按钮的callback中对振幅参数作修改。排除了一些小问题后,你的曲面终于可以动起来了,按―增大振幅‖等也没有影响图形的运动,真的是―一点影响都没有‖啊!问题出在哪里呢?原来,当定时器第一次触发时,用户指定的参数被传递到响应函数中执行,以后每一次触发,都是使用的这同一组参数,并不会随着程序的运行而更新。好了,现在可以在―增大振幅‖中重新赋一次参 ,{@PlotUpdate,handles})42、如何GUI中返回参数-[:时请以超形式标明文章原始出处和作者信息及本 /logs/17282259.html在研学上看到有人问这个问题,把方法在这里重新贴一下:在GUI子程序的 函数的结尾加上uiwait(handles.figure1);figure1是子GUI的GUI中控制程序结束(如"OK‖和"Cancel"按钮)callback末尾加上uiresume(handles.figure1),不要将delete命令放在这些callback中;在子GUI的 中设置要传递出去的参数,如varargout{1}=handles.par1;varargout{2}=handles.par2;末尾添加delete(handles.figure1);结束程序。在GUI的中,如果不加uiwait,程序会直接运行到下面,执 。也就是说程序一运行,返回值就确定了,再在其它部分对handles.output作更改也没有效果了。加上uiwait后,只有执行了uiresume后,才会继续执行到 ,在此之前用户有充分的时间设置返回值。在一个GUI中调用另一个GUI时,主GUI不需要特别的设置,同调用普通的函数一样。在打开子GUI界面的同时,主程序还可以响应其它的控件。不需要担心子GUI的返回值被传错了地方。43 中GUI子程序的参数传递- :时请以超形式标明文章原始出处和作者信息及本 /logs/17622732.htmlGUI子程序的参数传递输入参数传递:比如子GUI的名称为subGUI,设想的参数输入输出为:[out1=subGUI(in1,subGUIm文件中(GUIDE自动产生第一行的形式为:functionvarargout=subGUI(varargin)该行不用做任何修改;varargin和varargout分别是一个可变长度的cell数组( 帮助文件中有说明)。输入参数in1和in2保存在varargin中,输出参数out1,out2包含在varargout中;在subGUI 中,读入参数,并用guidata保存,即handles.in1=varargin{1};handles.in2=varargin{2};guidata(hObject,handles);返回参数的设置在GUI子程序 函数的结尾加uiwait(handles.figure1);figure1是subGUI的subGUI中控制程序结束(如"OK‖和"Cancel"按钮)末尾加上uiresume(handles.figure1),不要将delete命令放在这些callback 中设置要传递出去的参数,如=handles.out1varargout{2}=handles.out2;末尾添加delete(handles.figure1);结束程序。在GUI的中,如果不加uiwait,程序会直接运行到下面,执 。也就是说程序一运行,返回值就确定了,再在其它部分对handles.output作更改也没有效果了。加上uiwait后,只有执行了uiresume后,才会继续执行到 在此之前用户有充分的时间设置返回值。通过以上设置以后,就可以通过 [out1,out2]=subGUI(in1,in2)的形式调用该子程序。在一个GUI中调用另一个GUI时,主GUI不需要特别的设置,同调用普通的函数一样。在打开子GUI界面的同时,主程序还可以响应其它的控件。不需要担心子GUI的返回值被传错了地方。44 保存axes上的图的问题(包括坐标轴做了一个按钮―保存‖,可以另存为画在axes上的图,保存为jpg格式,参考了里的帖子,写了代码,保存的是空的,什么都没有,请问是哪里的问题?保存的如何才能包括axes的坐标轴?代码% handletom_file_save1(see% -tobedefinedinafutureversion%handles axes(handles.axes1);%取得axes1的句柄newAxes=copyobj(handles.axes1,newFig); 制到新建的figure中 [filename,pathnameuiputfile'*.jpg','figuretype(*.jpg)'},'保存原始波形');f=f=frame2im(f);代码ifisempty(handles.axes1)newAxes=copyobj(handles.axes1,newFig); 制到新建的figure中 [filename,pathnameuiputfile'*.jpg','figuretype(*.jpg)'},'保存原始波形');f=getframe(gcf);f=imwrite(f,f=getframe(newFig);f=frame2im(f);imwrite(f,fpath);这样就可以了,谢了!45 鼠标控制的两个GUI例子(附代码相信大家都知道 提供了一种非常方便的控制方式,利 (制当鼠标有按键被单击时所执行的操作)、 ( 中文综合例子---实现画笔功能程序代码代码switchactioncase ','mouse%'stop' case'move'point=%画出X与Y得坐标值case'stop'%当鼠标键被时,不执行任何操 代码:functionvarargout= M-file %%%H= returnsthehandletoanew orthehandle%theexisting%%functionnamedCALLBACKin .Mwiththegiveninput% ('Property','Value',...)createsanew raisesthepairsare%unrecognizedpropertynameorinvalidvaluemakesproperty %%*SeeGUIOptionsonGUIDE'sTools .Choose"GUIallowsonlyone%instancetorun%%Seealso:GUIDE,GUIDATA,%Copyright2002-2003TheMathWorks,%Edittheabovetexttomodifytheresponseto%LastModifiedbyGUIDEv2.503-Oct-2009%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,... ', , , ',[],'gui_Callback',ifnargin&&gui_State.gui_Callback=str2func(varargin{1});if[varargout{1:nargout}]= %Endinitializationcode-DONOT%---Executesjustbefore ismadevisible. (hObject,eventdata,handles,%Thisfunctionhasnooutputargs, %hObjecthandleto% -tobedefinedinafutureversion%handlesstructurewithhandlesanduserdata(see%varargincommandlinearguments (see%Choosedefaultcommandlineoutputforhandles.output=hObject;%Updatehandlesstructureguidata(hObject,%UIWAIT waitforuserresponse(see%%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout= (hObject,eventdata,%varargoutcellarrayforreturningoutputargs(see%hObjecthandleto% -tobedefinedinafutureversion%handlesstructurewithhandlesanduserdata(see%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%---Executesonmousepressoveraxesbackground.functionax (hObject,eventdata,handles)%hObjecthandletoaxes1(see% -tobedefinedinafutureversion%handlesstructurewithhandlesanduserdata(seeGUIDATA)mousestartCallback函数即可,即可实现如下的画笔功能。functionvarargout=%ZHENGHUIM-filefor ZHENGHUI,byitself,createsanewZHENGHUIorraisestheexisting % handleto theexisting% callsthe functionnamedCALLBACKinZHENGHUI.Mwiththegiveninputarguments.% ZHENGHUI('Property','Value',...)createsanewZHENGHUIorraisesthe existingsingleton*.Startingfromtheleft,propertyvaluepairsare appliedtotheGUIbeforezh called.An unrecognizedpropertynameorinvalidvaluemakespropertyapplication stop.Allinputsarepassedtozh % *SeeGUIOptionsonGUIDE'sTools .Choose"GUIallowsonlyone instancetorun%%Seealso:GUIDE,GUIDATA,%LastModifiedbyGUIDEv2.504-Oct-2009%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State= mfilename,'gui_Singleton',gui_Singleton, , ', , ',[], ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});if[varargout{1:nargout}]= (gui_State,%Endinitializationcode-DONOT%---Executesjustbeforezhenghuiismadevisible.functionzh (hObject,eventdata,handles,%Thisfunctionhasnooutputargs, % handleto% -tobedefinedinafutureversion% % %Choosedefaultcommandlineoutputforzhenghuihandles.output=hObject;%Updatehandlesstructureguidata(hObject,%handles.sinc=sinc;f=@(x,y)3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-1/3*exp(-(x+1).^2-y.^2);%初始化绘图函数%选择2-Dguidata(hObject,%---Outputsfromthisfunctionarereturnedtothecommandfunctionvarargout=z (hObject,eventdata,%varargoutcellarrayforreturningoutputargs(see% handleto% -tobedefinedinafutureversion% %Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%---Executesonbuttonpressinfunctionpushbutton1_Callback(hObject,eventdata,% handletopushbutton1(see% -tobedefinedinafutureversion%handles %---Executesonselectionchangein function 1_Callback(hObject,eventdata,% handleto 1(see% -tobedefinedinafutureversion% contentsascell contents{get(hObject,'Value')}returnsselecteditemfrompopup switchstr{val}casecase'membrane'
case%---Executesduringobjectcreation,af
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人汽车租赁合同简易版范本
- 2025北京市农业机械配件买卖合同(BF)
- 诗经陈风课件
- 农民合作开展科技示范园项目协议
- 红楼梦第五十一回课件
- 诗经两首课件原创力文档
- 商业合作伙伴互惠战略合作协议
- 红楼梦宝黛课件
- 市场监管局特检科“一支部一特色”品牌创建工作总结
- 正版化软件培训课件
- 部编道德与法治四年级上册教材分析解读
- 西宁金鑫气体有限公司湿法工艺生产溶解乙炔气项目环评报告
- 广东省工商局授权委托书格式
- 高中音乐-保卫黄河(钢琴协奏曲《黄河》第四乐章)教学课件设计
- 深圳大学 答辩3
- 2023年湖南高速铁路职业技术学院单招职业适应性测试题库及答案解析
- 高一英语练字字帖
- 学校食堂教师就餐付费记录表
- 第一章工程材料(机械制造基础)
- GB/T 40073-2021潜水器金属耐压壳外压强度试验方法
- GB/T 10079-2018活塞式单级制冷剂压缩机(组)
评论
0/150
提交评论