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仿真

嗯找了篇博客照着樣子搭就行了

可能有用?當時用ctrl shift L 來快速打開Library Browser
.slx源文件傳到堅果雲了.你需要一個堅果雲賬號來access.

仿真結果

參考

如何在博客園中插入視頻、音頻、網頁
html視頻自動播放(iframe)及不自動播放(video)
HTML 標簽的 height 和 width 屬性
simulink建模之求解微分方程
Streamja - Simple video sharing,不好用,差評


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM