资源描述:
《MATLAB_GUI编程技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MatlabGUI编程技巧1.如何使gui编的界面一运行就居中?方法一:a>假如当前的figure的句柄是h,则在程序运行的刚开始,用这个命令, set(h,'visible','off'); %使h对应的图不可见.b>然后你再进行你的其它的操作,c>最后,在程序的结尾部分,用这两个语句: movegui(h,'center'); %将这个图移到中央.详细用法参阅help movegui set(h,'visible','o
2、n'); %恢复其可见性.方法二:functionfigureMiddledfigure;set(0,'units','pixels');set(gcf,'units','pixels');screenrect=get(0,'screensize');screenwidth=screenrect(3);screenheight=screenrect(4);figwidth=600;figheight=200;figposition=[(screenwidth/2-figwidth/2)... (scre
3、enheight/2-figheight/2)... figwidthfigheight];set(gcf,'position',figposition);2.有关GUI实时显示的问题首先,用MATLAB做实时显示其效果并不是很好,主要原因就是它的速度慢,尤其是你的程序中出现循环时,速度更慢. 前几天,我也做了一个实时显示的东西,我的做法如下: 1.建立一个图,如h=plot(x,y); set(h,'erasemode','xor') %设置擦除方式.
4、 2.建立一个死循环,不断的接受数据,并且不断的更新x,y 3. 用这个指令set(h,'xdata',x,'ydata',y),使x,y的数据不断的得到更新. 4.用屏幕刷新指令drawnow进行刷新. 就这个方法就可以做到实时了.3.关于参数传递关于参数传递主要有三种方法: 1).就是用定义全局变量的方法来实现,如global a,等这种用法,这种一般用在小程序中,因为如果全局变量太多的话,会造成系统混乱. 2).应用对象的userdata属性
5、,直接通过对象的userdata属性来进行各个callback之间的数据存取操作.首先把数据存到一个特定的对象中,然后在取出来,如下: >>set('ui_handle','userdata',value) >>value=get('ui_handle','userdata') 这种方法虽然简单,但是缺点是每个对象只能存取一个变量值. 3).利用setappdata,getappdata,rmappdata函数来实现,这几个函数来进行数据传递是最有弹性的.使用方法和第二种方法类似.4
6、.怎么直接将下面一段.txt格式导到MATLAB中?用load命令loade:dataccc.txt;我的文件是e盘data下的其实还有一个方法可以导入,有没有试过textread呢5.函数结构与参数传递1)最近简单整理了一下发过的东西,将大家比较困惑的两个问题,再强调一下。这个问题我也曾经想过很久很久。就是某个函数的子函数,可能具有复用性,而我又不想改变原来的函数,怎样才能调用这个子函数呢?那就是给每一个函数加一个壳。例如这个函数结构:functionvarargout=test_function(var
7、argin)%....................ifnargin==0%创建界面。%即使不创建界面,也可以采用这种函数结构。figurehandle=test_generatefigurecontent;%初始化函数,可以用于创建初始化数据。test_initfiguecontent(figurehandle);ifnargout>0varargout{1}=figurehandle;endelseifischar(varargin{1})tryifnargout>0[varargout{1:
8、nargout}]=feval(varargin{:});elsefeval(varargin{:});endcatchdisp(lasterr);endend%-------------------------------------------------------------------------functionfigurehandle=test_generatefigure