在GUIDE创建的Matlab GUI中,从辅助函数存储/检索数据

时间:2014-05-23 03:09:14

标签: matlab matlab-guide

我制作了一个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);

1 个答案:

答案 0 :(得分:1)

您的这一行实际上应该保存更改:

guidata(handles.mainGUI, handles);

现在,如果你想使用调用函数后修改的句柄,你必须实现它们:

FRETCalculator1(handles);
handles=guidata(handles.mainGUI);
% ...code using modified handles

实际上,句柄在图中被修改,但在函数调用后执行的代码中没有被修改。

我希望这很清楚。 :)