输出参数过多错误:MATLAB

输出参数过多错误:MATLAB,matlab,function,Matlab,Function,我刚开始学习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))); 因此,我需要U0,vw,vt,L,R 如果我将其放在命令窗口中: D = (1/L*C)-((R^.2)/(4*

我刚开始学习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)));
因此,我需要
U0
vw
vt
L
R

如果我将其放在命令窗口中:

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
plot

我的尝试:

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
出现以下错误:

使用alpha时出错
输出参数过多


你知道如何使这个函数工作吗?

什么是
alpha
?它很可能存在于您的工作区中,所以当您从工作区调用这些行时,一切都很好。但是,在
test
函数中,MATLAB没有“基本”工作区的可见性,并且
alpha
不存在!将其作为参数传递或像其他值一样定义。与测试版相同


此外,您还在函数中定义了输出参数
u

% Ouput  vvv
function [u] = test(L,C,R,tmin,tmax,omega,U0)
但是在函数执行过程中,您从未为变量
u
分配过任何内容”。如果要返回
surf
figure对象,请在调用该对象时将其分配给
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