> 其他 >
simulink中怎样用S-function代替微分环节du/dt
人气:361 ℃ 时间:2020-10-02 01:23:35
解答
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 1;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0 0];
str = [];
ts = [1e-6];
function sys=mdlUpdate(t,x,u)
to=1e-6;
d=(u(1)-x(1))/to;
sys=[u(1) d];
function sys=mdlOutputs
sys=x(2);太复杂了!本人愚钝,看不懂, 我想想用S函数写du/dt, 我想只是用fuction y=u ,下面是函数代码,一个输入一个输出和微分环节一样上面的就是s函数写的du/dt啊,只是我没有去验证而已,大体上就是这样的,不过里面还有点小错误。离散的du/dt=(当前值-上一次的值)/采样时间fuction y=u这个就不是s-function了,而是普通的函数。下面的仿真采用ode4,步长1e-4。1/Z的采样时间1e-4。信号源:正弦波,幅值1,频率1,相位0Embedded MATLAB Function代码:function y = fcn(u1,u2)y = (u1-u2)/1e-4;
推荐
猜你喜欢
© 2024 79432.Com All Rights Reserved.
电脑版|手机版