0

我正在使用 GUIDE 创建一个界面,其中单击按钮时将执行函数 [x,y]=function(a,b,c,d)。我有问题让这个工作。GUIDE 使用语法 varargout = LineasA(varargin) 创建一个自动生成的函数。

我使用这种语法 [x,y]=LineasA(a,b,c,d) 调用 GUI。

我得到的错误是:

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);
4

1 回答 1

0

您必须清楚从哪里获取此函数的输入,以及您希望输出到哪里。将输入和输出存储在传递给回调的句柄结构中是正确的编码。此外,正确的回调结构是:

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,它们通常是不好的编码技术。

于 2011-11-14T05:46:25.677 回答