为什么matlab提示输入参数的数目不足

这是我的代码:

x0=[0;0];
wv=[1;2;3];
wa=[2;1;3];
g=9.8;
[va,lamda] = optxestimatecon(x0,wv,wa,g) 

function [va,lamda] = optxestimatecon(x0,wv,wa,g) 
coder.extrinsic('myfmincon' )
y=myfmincon(x0,wv,wa,g);
va=y(1);
lamda=y(2);
lamda
end

function y=myfmincon(x0,wv,wa,g)
f=@(x)myfuncon(x,wv,wa,g);
A = [];b = [];
Aeq = []; beq = [];
x=[0;0];
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);
%;fminunc(f,x0);
y=x;
end

function F = myfuncon(x,wv,wa,g)

F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));

end

然后是报错:

输入参数的数目不足。

出错 myfuncon (line 4)
F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));

出错 fmincon (line 552)
      initVals.f = feval(funfcn{3},X,varargin{:});

出错 myfmincon (line 7)
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);

出错 optxestimatecon (line 4)
y=myfmincon(x0,wv,wa,g);

出错 jiaoben (line 5)
[va,lamda] = optxestimatecon(x0,wv,wa,g)

原因:
    Failure in initial objective function evaluation. FMINCON cannot continue.

 

为啥老是说参数不足,求老师们教导

function F = myfuncon(x,wv,wa,g)
global wv wa g;
F=-(-g*(wv(3,1)-x(1)*sin(x(2)))/(x(1)*cos(x(2))+wv(1,1))+x(1)*(wa(1,1)*cos(x(2))-wa(3,1)*sin(x(2)))+wv(1,1)*wa(1,1)+wv(3,1)*wa(3,1));
end
function y=myfmincon(wv,wa,g)
global wv wa g;
A = [];b = [];
Aeq = []; beq = [];
x0=[0;0];
[x,fval]=fmincon(@myfuncon,x0,A,b,Aeq,beq,[0;-2*pi],[100;2*pi]);
y=x;
end
end
function [va,lamda] = optxestimatecon(wv,wa,g)
global wv wa g;
coder.extrinsic('myfmincon' )
x0=[1;1];
y=myfmincon(wv,wa,g);
va=y(1);
lamda=y(2);
end

可能有的地方还需要修改,希望对你有帮助

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y