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

我是做单神经元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'.请高手指点,不胜感激!

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

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-05
没有对变量x进行定义,就直接调用了,例如:sys =mdlUpdates(t,x,u,deltaK)中的形参x在之前并没有定义或赋值。
第2个回答  2014-11-07
我也碰到这个问题,请问楼主最后是怎么解决的
相似回答