如何存储回调函数的结果?

时间:2012-11-30 11:20:48

标签: matlab user-interface callback

我已经创建了一个MATLAB gui来运行某个模拟。

在这个gui中是一个开始模拟的按钮。然后,此按钮回调函数将执行计算。这将导致带有结果的数据集。

此外,在界面中是一个绘图区域,以及一个在不同图形之间切换的选择框,以显示模拟结果的不同方面。因此,结果必须也可用于gui中的其他功能。这是一个问题,因为回调函数没有输出

我能想到的两个解决方案是将数据集存储在MAT文件中,或者使用全局变量。第一个解决方案对我来说似乎并不正确,而且我了解到如果可能的话必须避免全局变量。那么这里最好的解决方案是什么?

2 个答案:

答案 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

这应该在语义上比使用全局变量更正确。但是,我仍然好奇为什么。有什么意见吗?