对于离散系统报错原因我找到的主要有两个:
1.输入输出接口的数量设置不对
2.若sizes.NumDiscStates = 2;则x0=[1 1];其实我的程序里面并没有用到x0,具体为啥报错我不太明白,但是我的这么改了运行成功了
这是一个很简单的代码,两数相乘,通过constant给出两个数的数值,然后进行计算
function [sys,x0,str,ts] = ceshi1(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 2
sys=mdlUpdate(t,x,u);
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 = 2;
sizes.NumOutputs = 1;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0=[1 1];
str = [];
ts = [0 0];
function sys=mdlUpdate(t,x,u)
sys=[];
function sys=mdlOutputs(t,x,u)
sys=u(1)*u(2);