我已经创建了一个MATLAB gui来运行某个模拟。
在这个gui中是一个开始模拟的按钮。然后,此按钮回调函数将执行计算。这将导致带有结果的数据集。
此外,在界面中是一个绘图区域,以及一个在不同图形之间切换的选择框,以显示模拟结果的不同方面。因此,结果必须也可用于gui中的其他功能。这是一个问题,因为回调函数没有输出
我能想到的两个解决方案是将数据集存储在MAT文件中,或者使用全局变量。第一个解决方案对我来说似乎并不正确,而且我了解到如果可能的话必须避免全局变量。那么这里最好的解决方案是什么?
答案 0 :(得分:1)
你可以创建一个继承自定义你的回调的句柄类的用户定义的类,然后你的回调从句柄类实例的“内部”执行
classdef mySimulation < handle
properties
hFigure
mySimResults
end
methods
function this = mySimulation(varargin)
hFigure = figure;
...
<build figure components>
...
end
function myButtonCallback(this, src, evnt)
this.mySimResults = runMySimulation;
...
<update plot etc>
end
function mySelectBoxCallback(this, src, evnt)
...
<update plots>
end
end
end
答案 1 :(得分:0)
MATLAB为此提供了某些功能。有guidata函数,可以存储一个变量。例如,这可用于传递你的gui手柄。此外还有setappdata和getappdata等功能。这些函数是在函数之间传递数据的方法,并将变量耦合到数字句柄。
有关不同方法的更多信息,请参阅here。
这应该在语义上比使用全局变量更正确。但是,我仍然好奇为什么。有什么意见吗?