我制作了一个GUI程序来处理和查看图像。我编写了一些在辅助函数中多次使用的代码,这些代码在GUI函数回调中被调用,以使其更简洁。
但是,如果以这种方式编写程序,我在保存对句柄结构的更改时遇到了麻烦。当我在调试模式下检查时,辅助函数中的计算正确完成。但是对句柄结构的更改没有更新。
我想知道如何解决这个问题?
代码:
function ProcessData_Callback(hObject, eventdata, handles) % GUI callback
val = get(handles.menu, 'Value');
str = get(handles.menu, 'String');
switch str{val}
case 'Mode1'
FRETCalculator1(handles);
case 'Mode2'
FRETCalculator2(handles);
end
function FRETCalculator1(handles) % Helper function
for indT = 1:size(handles.Data,1)
for indZ = 1:size(handles.Data,3)
handles.Data{indT,3,indZ} = handles.Data{indT,1,indZ}./(handles.Data{indT,2,indZ}+1);
end
end
guidata(handles.mainGUI, handles);
答案 0 :(得分:1)
您的这一行实际上应该保存更改:
guidata(handles.mainGUI, handles);
现在,如果你想使用调用函数后修改的句柄,你必须实现它们:
FRETCalculator1(handles);
handles=guidata(handles.mainGUI);
% ...code using modified handles
实际上,句柄在图中被修改,但在函数调用后执行的代码中没有被修改。
我希望这很清楚。 :)