2017-07-27 120 views
0

我剛剛開始使用MATLAB,我正在尋求關於如何使用更多參數來使函數工作的建議。太多的輸出參數錯誤:MATLAB

我已經建立了這個公式:

I = real((U0.*exp(i.*vw.*vt))./(L.*(-vw.^2+ (R/L).*i.*vw + (1/L.*C)))) + ... 
    exp((-R.*vt)./(2.*L).*(alpha.*cos(sD.*vt)+ beta.*sin(sD.*vt))); 

因此我需要的值U0vwvtLR

如果我把這個命令窗口:

D = (1/L*C)-((R^.2)/(4*L^.2)); 
sD = sqrt(D); 
vt = linspace(tmin,tmax,200); 
vw = omega; 
[vw,vt] = meshgrid(vw,vt); 
I = real((U0.*exp(i.*vw.*vt))./(L.*(-vw.^2+ (R/L).*i.*vw + (1/L.*C)))) + exp((-R.*vt)./(2.*L).*(alpha.*cos(sD.*vt)+ beta.*sin(sD.*vt))); 
surf(vw,vt,I) 

它工作正常。

所以,現在我想創建一個函數,它讀取數值並計算上面的所有東西,並返回surf

我嘗試:

function [u] = test(L,C,R,tmin,tmax,omega,U0) 
    D = (1/L*C)-((R^.2)/(4*L^.2)); 
    sD = sqrt(D); 
    vt = linspace(tmin,tmax,200); 
    vw = omega; 
    [vw,vt] = meshgrid(vw,vt); 
    I = real((U0.*exp(i.*vw.*vt))./(L.*(-vw.^2+ (R/L).*i.*vw + (1/L.*C))))+exp((-R.*vt)./(2.*L).*(alpha.*cos(sD.*vt)+ beta.*sin(sD.*vt))); 
    surf(vw,vt,I) 
end 

出現此錯誤的:

Error using alpha
Too many output arguments.

你有一個想法如何使這項功能的工作?

回答

1

什麼是alpha?它很可能存在於您的工作區中,因此當您從工作區調用這些行時,一切都很好。但是,在test函數內MATLAB沒有「基本」工作區的可見性,並且alpha不存在!將它作爲參數傳遞或將其定義爲您的其他值。與beta同上。


還定義了輸出參數u在功能

% Ouput vvv 
function [u] = test(L,C,R,tmin,tmax,omega,U0) 

但功能」期間,你從來沒有指派任何東西給變量u。如果你想要回surf數字對象,分配那到u當它被叫。

% Square brackets not needed as only returning one variable 
function u = test(L,C,R,tmin,tmax,omega,U0) 
    % ... stuff 
    u = surf(vw,vt,I) 
end