在MATLAB仿真中,为什么老是说Undefined function or variable 'x'. ?

我是做单神经元PID控制器仿真,这的S函数如下:function[sys,x0,str,ts]=PID(t,x,u,flag,deltak)switchflag,&nbs... 我是做单神经元PID控制器仿真,这的S函数如下:function [sys,x0,str,ts]=PID(t,x,u,flag,deltak)switch flag,    case 0        [sys,x0,str,ts] =mdlInitializeSizes;    case 2        sys = mdlUpdates(t,x,u,deltak);    case 3        sys=mdlOutputs(t,x,u);    case {1,4,9}        sys = [];    otherwise        error(['Unhandled flag = ',num2str(flag)]);end;function [sys,x0,str,ts] = mdlInitializeSizes         ;sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscstates = 3;sizes.NumOutputs=1;sizes.NumInputs=4;sizes.DirFeedthrough =1;sizes.NumSampleTimes=1;sys = simsizes(sizes);x0 = [0;0;0];str = [ ];ts = [-1 0];% when flag=2,updates the discrete states function sys =mdlUpdates(t,x,u,deltaK)sys=x+deltaK*u(1)*u(4)*(2*u(1)-u(2));% when flag=3,computates the output signalsfunction sys = mdlOutputs(t,x,u)xx= [u(1)-u(2) u(1) u(1)+u(3)-2*u(2)];sys=[u(4)+0.12*xx*x/sum(abs(x)); x/sum(abs(x))]; 搭好模块之后,双击S-Function模块,在S-Function name:输入PID在S-Function parameters:输出入 X  然后运行系统,老是说 Error evaluating parameter 'x' in 'untitledd1226/S-Function': Undefined function or variable 'x'.请高手指点,不胜感激! 展开
 我来答
百度网友3c63e6c
推荐于2016-11-10 · TA获得超过2848个赞
知道大有可为答主
回答量:3829
采纳率:68%
帮助的人:2788万
展开全部

这个错误是未对x定义造成的。错误原因及修改方法如下

  1. 没有给变量x赋值。在函数调用x前要给x赋值,例如x = 5;

  2. x已经赋值,但由于是在一个函数中赋值,但是在另一个函数中调用。此时用global在两个函数中分别声明x为全局变量。可以解决。

谢扬球
2012-04-05 · TA获得超过281个赞
知道小有建树答主
回答量:249
采纳率:100%
帮助的人:225万
展开全部
没有对变量x进行定义,就直接调用了,例如:sys =mdlUpdates(t,x,u,deltaK)中的形参x在之前并没有定义或赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qianfei飞
2014-11-07
知道答主
回答量:13
采纳率:0%
帮助的人:4万
展开全部
我也碰到这个问题,请问楼主最后是怎么解决的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式