请教S-function问题
仿真时出现如下错误提示:S-function system in 'time/S-Function' must have a continuous sample time since it has continuous states请问应该如何解决。 你ts那里错了应该,你前面如果是设置的连续系统,时间也应该是〔0 0〕
你把你的S函数拿来看下呢?给你的连接你都看了? 把时间ts改为〔0 0〕后出现如下提示:Sample times (TS) matrix returned by M-File S-function 'system' in 'time1/S-Function' must be empty。论坛上的有关S-function函数的主题我都看过了。
S-function函数如下:(模型在附件里)
function = system(t,x,u,flag)
switch flag,
case 0,
=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function =mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 1;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0= ;
str = [];
ts= ;
function sys=mdlDerivatives(t,x,u)
sys=;
function sys=mdlOutputs(t,x,u)
if u>0
sys=10;
else sys=30;
end 这条语句意思是说至少需要一个采样时间.
sizes.NumSampleTimes = 1; % at least one sample time is needed
但是下面的函数中没有采样时间的.就是下面这个函数
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; %Example, set the next hit to be one second later.
sys = t + sampleTime;
解决方法:
1.要么sizes.NumSampleTimes = 0;
2.下面加上这个函数
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; %Example, set the next hit to be one second later.
sys = t + sampleTime;
s函数
请问我想用s函数实现一功能, 他的输入可以是一个视频序列吗 ,谢谢大家了,在s函数立怎样设置呢 刚刚遇到了这个问题,但是我是将系统加上零阶保持器后才出现这个问题。系统没有加上零阶保持器之前,采用ODE45变步长仿真,有很好的控制性能。问题在于模拟控制器的输出振动太高,实际上的采样控制器或者元件肯定达不到。将仿真步长设置为固定后,系统立马就报错:计算中产生虚数,这和采样定理有关。我就想着能不能加一个零阶保持器,克服一下采样频率的问题。结果就出现了和楼主一样的问题。 学习了。。
页:
[1]