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 に答える