您的位置:首页 > 编程语言 > MATLAB

【matlab】ispc && isequal解读

2017-01-13 15:22 218 查看
>> help getappdata

getappdata - Value of application-defined data

    This MATLAB function returns the value of a MATLAB variable stored in a GUI.

    value = getappdata(h,name)

    values = getappdata(h)

> >帮助getappdata

getappdata——已定义应用程序数据的值

这个MATLAB函数返回一个在GUI中存储的MATLAB变量的值

3. 用全局变量,最次的办法,有时却是最好的办法;
对于处理GUI问题,一般不用save和load命令(要从mat文件读取数据初始化或者把数据存储到mat文件中例外)

“function的varargin和varargout传送”的方法也不较少使用(因为对于控件的回调函数,matlab规定了输入参数为“hObject, eventdata, handles, varargin”,且一般没有返回值,所以不同于自定义的函数),所以剩下的方法就只有三种了:


1. 存在handle的ApplicationData中――利用setappdata函数将数据保存在对象的“ApplicationData”属性中,利用getappdata函数从对象的“ApplicationData”属性中提取数据,如果没有定义,就为空。

例如,假设figure的tag属性是figure1,则setappdata(handles.figure1,’A’,A)就可以把变量A存放到figure1的“ApplicationData”属性中,名字为A,而B = getappdata(handles.figure1,’A’)就可以把figure1的“ApplicationData”属性中名字为A的变量赋给B。setappdata和getappdata操作的对象,最好为figure_handle,便于管理和扩展。Matlab的高级编程和对象控制,将大量使用这两个函数[转自cwit];

2. 保存在handles里面――首先,这是访问控件的常用方法,注意到Tag是唯一标识控件的属性,也就说,如果一个控件的Tag属性是a,那么,在fig对应的m文件中,只要含有“handles”作为其输入参数的函数中,就可以使用handles.a对该控件进行访问。既然句柄(相当于其他语言中的指针)已经拿到手了,就任由“宰割”了(例如设置属性、存取数据等就比较容易了);其次,可以利用这种方法把自定义的变量保存在handles里面进行存取,这在matlab帮助的Creating
a GUI with GUIDE一节中有具体介绍,不多说;


3. 用全局变量的方法――这是我进行参数传递的常用方法,使用方法是:在两个函数体(当然可以是多个了,这里是主函数和子函数的意思)中使用前加入语句“global A”,其中A是多个函数需要传递的变量名,多个变量用空格格开,句末不需要加分号。这种方法由于存放在硬盘上,存取速度会减慢,但是如果变量个数不多、或者对该变量引用的函数不多,可以考虑用此办法(我尚未能领会cwit兄所说“最次的办法,有时却是最好的办法”之含义)。

至于其他有关GUI命令、控件属性和图形属性可以参考matlab的帮助,或者参考“GUI命令大全”、《精通GUI图形界面编程》(这两个本论坛有)、“Matlab图形图像属性”、“GUI.rtf”(这两个参见附件,后者下载后手动修改一下后缀名)。实际上,用得比较多的控件属性不外乎以下几种(高手例外):

Visible属性,例如axes、edit、button等,格式:set(handles.***, ‘Visible’, ‘on’); 或者set(handles.***, ‘Visible’, ‘off’);

String属性,例如edit、text等,格式:str=get(handles.***, ‘String’)或set(handles.***,’String’,str);

Enable属性,例如edit、button、text等,格式:set(handles.***, ‘Enable’, ‘on’);或者set(handles.***, ‘Enable’, ‘off’);

Value属性,例如radio button、check box等,格式:a=get(handles.***, ‘Value’)或set(handles.***,’Value’,1); 或set(handles.***,’Value’,0);


留意一下响应函数的注释部分,有时候会得到提示的。例如,我的 matlab 2007a 中,在设计界面上增加了 listbox 控件后,m 文件的对应回调函数处显示如下:

% --- Executes on selection change in listbox1.

function listbox1_Callback(hObject, eventdata, handles)

% hObject handle to listbox1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array —— 这是该控件基本用法的一点提示

% contents{get(hObject,'Value')} returns selected item from listbox1 —— 这是该控件基本用法的一点提示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: