我目前正在重构一堆旧的Matlab代码(pre-oop Matlab),而且GUI代码很乱。
GUI基本上是一堆独立的Matlab图形,每个图形必须以不同的方式呈现相同的数据。
旧代码通过使用全局结构来处理此问题,以保存要与元数据一起显示的所有数据(主要是关于绘制当前数据所需大小的信息)。
我的问题是,在当前版本的Matlab中,这是否是在风格上正确的方式。我已经考虑将数据捆绑到句柄类中,将元数据捆绑到另一个中,然后将两者都传递给GUI中的每个图形,但我不知道添加的封装是否值得添加参数的混乱。 / p>
在Matlab GUI编程中是否有任何一般的样式规则来做出这样的决定?
答案 0 :(得分:4)
有几种方法可以做到这一点。您可以使用getappdata
和setappdata
将数据与单个数字相关联:
%# Associate some data to the main figure handle...
setappdata(main_FH, 'myData', data);
%# Retrieve that data from the main figure handle
myData = getappdata(main_FH, 'myData');
%# check if some app data exists for main_FH
validAppData = isappdata(main_FH, 'myData');
您也可以使用set(FH, 'UserData', myData)
(以及get()
),尽管每个句柄只有一个UserData
属性;您可以将其设置为结构并使用isfield()
而不是isappdata()
来查看myData
中的字段是否存在。
最后,有guidata
,但这实际上是GUIDE GUI的___appdata
包装。
总结了在The MathWorks website上传递数据的方法。