0

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

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

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

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

4

2 回答 2

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
于 2012-11-30T15:26:52.853 回答
0

MATLAB 为此提供了某些功能。有函数guidata,可以存储一个变量。例如,这可以用来传递您的 gui 句柄。此外还有 setappdata 和 getappdata 函数。这些函数是在函数之间传输数据并将变量耦合到图形句柄的方式。

可以在此处阅读有关不同方法的更多信息。

这应该在语义上比使用全局变量更正确。不过,我还是很好奇为什么。任何意见?

于 2012-11-30T11:20:48.497 回答