matlab在三秒后停止,请问Matlab中S函数里面能做出来一个3秒的延时吗?

s函数程序在这里,输入的量是转矩T和速度v.输出的是转矩。输入量用demux并在一起输入,程序里分别用u(2),u(1)表示。仿真输出似乎只是输出了倒数第二行的指令了,没有体现延时的情况。

请大家看看问题处在什么地方。具体的M文件和mdl文件在附件。

function [sys,x0,str,ts] = adhension(t,x,u,flag)

switch flag

case 0

[sys,x0,str,ts]=mdlInitializeSizes;

case 3

sys=mdlOutputs(t,x,u);

case { 1, 2, 4, 9 }

sys=[];

otherwise

error(['Unhandled flag = ',num2str(flag)]);

end

function [sys,x0,str,ts] = mdlInitializeSizes()

sizes = simsizes;

sizes.NumContStates  = 0;

sizes.NumDiscStates  = 0;

sizes.NumOutputs     = 1;  % dynamically sized

sizes.NumInputs      = 2;  % dynamically sized

sizes.DirFeedthrough = 1;   % has direct feedthrough

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

str = [];

x0  = [];

ts  = [-1 0];

function sys = mdlOutputs(t,x,u)

if u(1)>=10;                %u(1)=v

u(2)=0;                 %u(2)=T

sys=u(2);

for i=1:3/0.00001         %time delay

end                       %time delay

u(2)=100;

sys=u(2);

else

u(2)=100;

sys=u(2);

end

99e39a8196ca8f63dc1eee7b0d72d0ed.gif

2009-9-17 17:08 上传

点击文件名下载附件

6.52 KB, 下载次数: 4139

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值