在GUI的回调函数上使用函数

问题描述:

使用GUIDE创建一个接口,当单击该按钮时将执行函数[x,y] =函数(a,b,c,d)。我有问题来解决这个问题。 GUIDE使用语法varargout = LineasA(varargin)创建一个自动生成的函数。在GUI的回调函数上使用函数

我使用这种语法调用GUI [x,y] = LineasA(a,b,c,d),但是得到很多错误,我不能理解它们,希望你们能帮助我。

错误,我得到的是:

Error in ==> LineasA>LineasA_OutputFcn at 73 
varargout{1} = handles.output; 

??? Error using ==> feval 
Output argument "varargout{2}" (and maybe others) not assigned during call to 
"C:\Users\ZeTa\Documents\MATLAB\ImagenB\LineasA.m>LineasA_OutputFcn". 

Error in ==> gui_mainfcn at 263 
     [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], 
     gui_Handles); 

Error in ==> LineasA at 40 
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); 

Error in ==> ImagenB at 17 
[MatrizB,Cuenta]=LineasA(Cuenta,waveformObj,channelObj,MatrizB); 

Tnxs提前..

奥兹

你,你所得到的输入这个功能是明确的,并在您想要的输出去。将输入和输出存储在传入回调的句柄结构中是正确的编码。此外,适当的回调结构为:

LineasA(hObject, eventdata, handles) 

但是,如果你坚持打电话,并从基础工作空间存储,你可以做如下:

LineasA(hObject, eventdata, handles) 
    % grab values from base workspace 
    Cuenta = evalin('base', 'Cuenta'); 
    waveformObj = evalin('base', 'waveformObj'); 
    channelObj = evalin('base', 'channelObj'); 
    MatrizB = evalin('base', 'MatrizB'); 

    % the rest of your code 

    % assign outputs 
    assignin('base', 'MatrizB', matrizB); 
    assignin('base', 'Cuenta', Cuenta); 
end 

不过我建议得到的这些值处理结构并且不使用evalin和assignin,它们通常是不好的编码技术。