2011-05-07 75 views
0

使用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提前..

奧茲

回答

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,它們通常是不好的編碼技術。