[Fig
文件方式,即使用菜单
File->New->GUI
来设计界面
]
首先值得注意的是,
在低版本
matlab
上
制作的含
GUI
的
m
文件一般不能在高版
本的
matlab
上面运行,但是从
7.0
版开始改进了一点,我试过
6.5
版的含
GUI
的
m
文件可以在
7.0
版上运行,但如果在
7.0
版上面修改过
.fig
文件,那么就
不能回到
6.5
版上运行了
(显示一堆错误,
我没看懂,
不知道能否通过修改使之
重新可在
6.5
版上运行,呵呵),而在
7.0
版上制作的含
GUI
的
m
文件就完全
不能放到
6.5
版上运行了
(也是同样的错误)
。
这可能是因为
matlab
各版本在
GUI
上改动较大,
所以都不支持向下兼容。
也许兼容性差是使用
GUI
编写程序的最大
麻烦。
其次,说说使用
GUI
的好处。不知道是否承袭了
VC
or
BCB
的习惯,我比较喜欢
编写完程序后按快捷键运行(此时会自动保存
m
文件),但是,对于程序有输入
参数的
时候,如果不采用
GUI
方式,这显然是行不通的――当然了,可以在
command window
按“向上”键然后重新改写你想要的参数。对于一些较大型的
程序,正因为我比较偏向于按
F5
运行程序,所以我会选择使用
GUI
方式。不过
GUI
方式的好处就远不止于此了,
它可以把几个功能相关的模块集中起来,
使得
不需要重新关闭、运行就能得到不同的结果,便于比较;可以减少
figure
满天
飞的现象,这在
matlab
中尤为明显;便于交互式地观看不同的数据,例如在我
处理的
fMRI
问题中,希望观看每个三维点对应的时间序列,这时候需要提供交
互式的选择„„不过,
尽管
GUI
有很多好处,
但是其缺点也是有的,
除了上面提
到的兼容性(移植性)以外,要管理、维护一个
GUI
界面也是比较麻烦的,相信
有其他语言的界面设计经验的朋友也知道这点。
再
者,对
GUI
问题,说说我的一点经验吧。其实,
matlab
已经在这方面改进了
不少,从控件的增加和教程的学习都可以看出来。例如
6.5
版本是没有
Panel
和
Button Group
这两个控件的,在
2006a
版本中就新增了这两个控件(这个好
像
7.0
版就有了,不确定);教程方面,也使用了最为直观的视频教学方式,建
议新手看看
Creating
a
GUI
with
GUIDE
和
Creating
Graphical
User
Interfaces
两节。所以,操作上的细节我就不多讲了,自己摸索一下就
ok
了。至于编程时
最为关键的参数传递问题,
可以参考本论坛或者仿真论坛上面的“函数结构与参
数传递”一文,作者整理得较完整,不过有点难懂。这里我简单说一下吧:
[
转
cwit]
关于参数传递的方法:
1.
在内存中提取:① 采用
function
的
varargin
和
varargout
传送,② 存在
handle
的
ApplicationData
中,③保存在
handles
里面。当然还有其他方法;
2.
存在硬盘上,采用
save
和
load
;
3.
用全局变量,最次的办法,有时却是最好的办法;
我想,对于这里处理的
GUI
问题,一般不会用到
save
和
load
命令(要
从
mat
文件读取数据初始化或者把数据存储到
mat
文件中例外),“function
的
varargin
和
varargout
传送”的方法也不较少使用
(
因为对于控件的回调函数,
matlab
规定了输入参数为“hObject, eventdata, handles, varargin”,且一
般没有返回值,所以不同于自定义的函数),所以剩下的方法就只有三种了: