OpeningFcn Matlab指南 - 以正确的顺序初始化句柄和调用函数

时间:2017-05-18 10:40:13

标签: matlab real-time matlab-guide handles

我正在开发一个项目,我使用Matlab GUI在按下按钮时实时切换音频输出。我有一个Matlab指南文件和一个使用音频系统工具箱监听GUI动作的功能。

GUIDE文件有一个OpeningFcn,我在GUI可见之前声明了各种句柄。在OpeningFcn中,我声明了“handles.AttenuationFactor”。当用户稍后按下GUI中的按钮时,handle.AttenuationFactor会相应地改变。

我没有问题让单独的函数监听GUI动作。我只是从正确的GUI对象中检索GUI句柄:

gui = findobj('Tag','GUI’);

if ~isempty(gui)
   % get handles
   gdata = guidata(gui);
   AttenuationFactor = gdata.AttenuationFactor;
end

%% Perform calculations with attenuation factor

这是泡菜:我何时调用侦听GUI的函数?

我无法在OpeningFcn中调用它,因为还没有调用最后一行代码guidata(hObject,handles),并且从'GUI'中检索信息时handle.attenuationFactor'因此不存在!

我已尝试将函数调用放在buttonpress的回调函数中,但这意味着创建的代码应该只执行一次,以便在每次按钮时进行评估。

有没有办法在函数调用之前强制更新句柄?

1 个答案:

答案 0 :(得分:1)

在开场白中,您需要设置基值。可以调用全局变量并设置值。相应地更新句柄。

您应该使用matlab中的set / get函数来处理句柄。你设置handle.attenuationFactor是什么意思?

如果用户更改了attenuFactor的值,一旦更改,在按钮的回调上,您可以非常直接地检索该值。 例如get(handles.attenuationFactor,'Value')