2011-03-28 103 views
2

我是Matlab新手。我正在通过Matlab文档学习。在这些时刻,我正在做示例"A GUI to Set Simulink Model Parameters"。 在“关闭GUI”中提到的一个部分,它出现了Close按钮回调下面的代码:什么是Matlab的有效句柄?

function CloseButton_Callback(hObject, eventdata, handles) 
% Close the GUI and any plot window that is open 
if isfield(handles,'PlotFigure') && ... 
     ishandle(handles.PlotFigure), 
    close(handles.PlotFigure); 
end 
close(handles.F14ControllerEditor); 

我想了解一个有效的句柄是通过解析的0​​手柄的行为是什么handles.PlotFigure。我在上面的四行代码中插入了一个断点行号 ,并且我在调试模式下运行了该程序。做完这些之后,我的结论是:
- 一个有效的句柄(在这种情况下,句柄图形对象叫做handles.PlotFigure)是一个没有被某个命令删除(关闭)的对象。

但是,我不明白为什么句柄字段handles.PlotFigure保持在句柄结构中,并且它尚未被删除。 我在调试时发现的另一个惊喜是变量编辑器显示“句柄无效.PlotFigure {1,1}”。我不明白这一点,因为句柄图.PlotFigure确实存在。

我会很感激,如果有人运行的例子,并可以解释我的疑惑。

回答

1

有关处理信息的方式尝试从Mathworks公司这个简短的视频:

http://blogs.mathworks.com/videos/2008/04/17/advanced-matlab-handles-and-other-inputs-to-guide-callbacks/

+0

谢谢您的回答。 – julian 2011-04-04 17:08:50

+0

我想有人试图运行上述示例并回答我的疑惑 – julian 2011-04-04 17:09:11

+0

我没有Simulink,因此无法重现您的发现。如果您仍然不确定,可以在www.mathworks.com/matlabcentral/answers/ – 2011-04-07 07:55:32