simulink中用了global 但是不管输入什么变量都不变了

我用了全局变量后不管输入什么输出都不变了有人知道为什么吗?是我的代码出了问题吗。。。

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

function y=myfmincon(x0,wv,wa,g)
 global 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]);
y=x;
wv
end

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

 

你的变量是全局变量,在修改这个变量的代码前后加个数据输出看看,看看代码有没有被执行

此例建议不使用全局变量,通过函数的输入输出参数传递数据即可。

将 optxestimatecon和子函数中的golbal行删除试试。

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

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

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