在GUI MATLAB中调用局部变量时出错

时间:2010-05-27 21:52:21

标签: matlab user-interface image-processing callback matlab-guide

我收到了这个错误:

Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)

当我尝试在FileName中使用pushbutton2_Callback时,我收到了提到的错误

FileNamepushbutton1_Callback中可变。

2 个答案:

答案 0 :(得分:4)

您需要将变量FileName从一个回调传递给另一个回调。为此,您可以将变量分配到'UserData'的{​​{1}}字段。 pushbutton1下的代码应该类似于:

pushbutton1_Callback

接下来,您需要阅读FileName=uigetfile(); set(handles.pushbutton1,'UserData',FileName); 下的变量:

pushbutton2_Callback

如果要检查结果,可以始终将分号留在行尾。

答案 1 :(得分:1)

有一种通用方法可以使用gui存储数据,以便在回调之间使用。您可以向handle对象添加任意字段,这样就可以放入pushbutton1回调

handles.filename = FileName;
guidata(hObject,handles); 

第二行是样板代码,您需要在任何更改句柄结构中的值的回调结束时放置该代码。

现在,您的所有回调都可以访问文件名。在您的特定情况下,在回调2中,您将拥有

img = imread(handles.filename);

当然,您可能希望稍后在另一个函数中使用此图像,因此您也可以将其存储在句柄中

handles.img = img;
guidata(hObject, handles);