【发布时间】:2012-04-11 09:30:29
【问题描述】:
我的 GUI 中有一个 new 按钮,这是它的回调:
function ptlNew_ClickedCallback(hObject, eventdata, handles)
% hObject handle to ptlNew (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
cla(handles.axes1,'reset');
clear variables
但最后一行不起作用
我可以做些什么来清除我的 GUI 的工作区而不关闭它以占用内存?
我的变量在句柄结构中
例如,如果我有变量 X,我应该在表单中访问它。X
我将变量属性设置为句柄,因为我想在多个回调函数中访问它们并且我不想将它们设为全局
我还尝试清除特定变量。所以我使用了这行代码而不是 clear variables
清除手柄。FiducialPixels
但它也不起作用,当我尝试在下一行通过代码访问它时:
句柄.FiducialPixels
它像以前一样打印在命令窗口上
我真的很困惑我该怎么办?
有趣的问题是 clear variables 或 clear handles.FiducialPixels 行不会产生任何错误或警告,但它们会完成任务!
当 Li-aung Yip 接电话时,我将电话改回了这种形式:
function ptlNew_ClickedCallback(hObject, eventdata, handles)
names = fieldnames(handles);
rmfield(handles,'FiducialPixels');
names = fieldnames(handles)
handles.FiducialPixels
但这是运行第 4 行和第 5 行的命令行上出现的内容:
名字 =
'figure1'
'pnlControlPointsImageCoordinates'
'uitoolbar1'
'pnlCalculateParameters'
'mnuInteriorOrientation'
'btnLoad2'
'edtImageFile'
'text17'
'edtInteriorOrientation'
'edtF'
'text16'
'edtYPPA'
'text15'
'edtXPPA'
'text14'
'text13'
'btnBrowseLensDistortion'
'edtLensDistortion'
'text12'
'btnBrowseInteriorFile'
'text11'
'axes2'
'uitoggletool3'
'uitoggletool2'
'uitoggletool1'
'ptlNew'
'txtCalculation'
'btnJumpTo'
'btnLoad'
'edtImagePath'
'text9'
'btnSaveParameters'
'btnCalculate'
'edtNumber'
'text8'
'uitable1'
'btnGinput'
'btnBrowse'
'edtFilePath'
'text1'
'btngrpTypeOfOrientation'
'axes1'
'mnuItemControlPointsImageCoordinates'
'mnuItemCalculateParameters'
'rdbtnProjective'
'rdbtnAffine'
'rdbtnConformal'
'output'
'TableData'
'TableDataEmpty'
'Matrix'
'FiducialImageCoordinates'
'dataH'
'FiducialPixels'
'flag'
'X'
592 个句柄.FiducialPixels
ans =
1.0e+003 *
7.5294 3.8246
0.1357 3.8723
3.9200 0.2311
3.8882 7.4499
7.4817 0.2311
0.2152 7.5294
0.2311 0.2311
7.4658 7.4817
您会看到handles.FiducialPixels 仍然存在
即使在第三行之后使用guidata(hObject,handles),结果还是一样的
【问题讨论】:
-
你能澄清一下你想清除哪个变量——全部吗? X?手柄?您可以使用 clear var_name 清除单个变量。另外,你能澄清一下“最后一行不起作用”的意思吗?
-
我想清除我在程序中创建的所有变量,即使它们在句柄结构中(因为你知道句柄结构还有一些其他成员,比如按钮的标签和它们的其他属性,我不知道不希望清除这些变量,因为这样我的 GUI 将被清除)但是我创建的用于进行一些计算和处理的变量应该被清除。我的意思是 clear variables 作为最后一行
标签: matlab user-interface variables workspace