Simulink的MATLAB function使用
note 2021-02-21 下面的文章来自我的公众号 yhm同学
note 2021-04-01 今天检查这篇文章的正确性,发现存在着一些我没有发现的错误,但是我不想修改了。
原文链接 https://mp.weixin.qq.com/s/J5nmK4Z9ImC3fRKqutXH5g
写个很简单的东西,可以说是备忘录
引子
这里打算用Simulink仿真一个常微分方程和初始条件描述的系统
\(x, \dot{x}, \ddot{x}\) 是研究的变量
\[\ddot{x}=\frac{F}{m}+\frac{T}{m}-9.8
\]
变参数 \(F, m, T\)
\[\begin{array}{c}
F=\left\{\begin{array}{rl}
-0.4\dot{x}^{2} & \dot{x}>0 \\
0.4 \dot{x}^{2} & \dot{x}<0 \\
0 & \dot{x}=0
\end{array}\right. \\
m=\left\{\begin{array}{rl}
1400-18 t & 0<t \leq 60 \\
320 & t>60
\end{array}\right. \\
T=\left\{\begin{array}{rr}
32000 & 0<t \leq 60 \\
0 & t>60
\end{array}\right.
\end{array}
\]
其中\(t\) 是仿真时间
初始条件
\[x(0)=0, \dot{x}(0)=0
\]
matlab仿真
feixiang.m
k=0.4;g=9.8;m0=1400;T=32000;
x0=[0,0];
ts=0:1:100;
[t,x]=ode45('huojian',ts,x0);
[t,x(:,1)]
a=[t,x];
x40=a(61,2)
v40=a(61,3)
a40=-(k/320)*v40^2+T/320-g
xmax=max(x(:,1))
subplot(2,1,1),plot(t,x(:,1)),title('altitude')
subplot(2,1,2),plot(t,x(:,2)),title('speed')
huojian.m
function y=huojian(t,x)
k=0.4;g=9.8;m0=1400;T=32000;m=m0-18*t;
if t>60
T=0;
m=320;
end
y=[x(2),-(k/m)*x(2)^2+T/m-g]';
Simulink仿真
嗯找了篇博客照着样子搭就行了
上面是streamja的视频(iframe标签),但是streamja被墙了
可能有用?当时用ctrl shift L 来快速打开Library Browser
.slx源文件传到坚果云了.你需要一个坚果云账号来access.
仿真结果
参考
如何在博客园中插入视频、音频、网页
html视频自动播放(iframe)及不自动播放(video)
HTML 标签的 height 和 width 属性
simulink建模之求解微分方程
Streamja - Simple video sharing,不好用,差评