书里面的一个FM0编码的m文件,文件名fm0code.m,编译出错:
Error using fm0code (line 2)
Not enough input arguments.
帮看看怎么回事
代码:
function [sys,x0,str,ts]=fm0code(t,x,u,flag,p)
switch flag, %判断仿真状态
case 0,[sys,x0,str,ts]=mdlInitializeSizes(p); %初始化
case 1,sys=mdlDerivatives(t,x,u); %导数计算
case 2,sys=mdlUpdate(t,x,u); %更新离散状态
case 3,sys=mdlOutputs(t,x,u); %计算输出
case 4,sys=mdlGetTimeOfNextVarHit(t,x,u); %计算下一个采样时间
case 9,sys=mdlTerminate(t,x,u); %仿真结束
otherwise
error(['Unhandlede flag=',num2str(flag)]);%错误处理
end
function [sys,x0,str,ts]=mdlInitializeSizes(p) %定义基本属性
sizes=simsizes; %返回空的SIZE结构
sizes.NumContStates=0; %连续状态数目
sizes.NumDiscStates=2; %离散状态数目
sizes.NumOutputs=1; %输出端口数目
sizes.NumInputs=1; %输入端口数目
sizes.DirFeedthrough=1; %是否直通
sizes.NumSampleTimes=1; %采样周期数目
sys=simsizes(sizes);
x0=[0;0]; %初始化离散状态
str=[];
ts=[p 0];
function sys=mdlDerivatives(t,x,u) %计算连续状态变量的导数
sys=[]
function sys=mdlUpdate(t,x,u) %更新离散状态变量、采样时间和最大步长
x(1)=x(1)+1;
if rem(x(1),2)==0
if x(2)==1
x(2)=0
else x(2)=1;
end
else
if u==0
if x(2)==0
x(2)=1;
else x(2)=0;
end
end
end
sys=x;
function sys=mdlOutputs(t,x,u) %计算S函数输出
sys=x(2);
function sys=mdlGetTimeOfNextVarHit(t,x,u) %计算下一次绝对时间
sampleTime=1;
sys=t+sampleTime
function sys=mdlTerminate(t,x,u) %仿真结束
sys=[];
书里说,运行时将MATLAB主窗口中的路径修改为M文件存放的路径,并在MATLAB命令窗口中输入p=0.5即可调用本m文件。可是就是出错