【物理MATLAB可视化——滑块摆】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、模型建立

在这里插入图片描述


二、代码实现

%%
clear,clc
%% 参数初始化
g=9.8;m1=4;m2=2;l=1;
M=m2/(m1+m2);
%% 求常微分方程
dz=@(t,z)[z(2);(-M*sin(z(1))*cos(z(1))*z(2)^2-g/l*sin(z(1)))/(1-M*cos(z(1))^2);
          z(4);(M*g*sin(z(1))*cos(z(1))+M*l*sin(z(1))*z(2)^2)/(1-M*cos(z(1))^2)];
[t,z]=ode45(dz,[0:0.02:20],[pi/4,0,0,0]);
%plot(t,z(:,1),t,z(:,3))
%% 求球的坐标,画x轴和y轴
axis([-0.6,0.6,-1,0.2])
axis equal
hold on
y1=-l.*cos(z(:,1));x1=z(:,3)+l.*sin(z(:,1));%画球的坐标
X=line([-0.6,0.6],[0,0],'linestyle',':');%x轴
Y=line([0,0],[0,-1],'linestyle',':');%y轴
%% 画杆、滑块、球的初始位置
gan=line([z(1,3),x1(1)],[0,y1(1)],'color','k','linestyle','-','linewidth',3,'erasemode','xor');
kuai=line([z(1,3)-0.05,z(1,3)+0.05],[0,0],'color','b','linestyle','-','linewidth',15,'erasemode','xor');
qiu=line(x1(1),y1(1),'color','r','marker','.','markersize',50,'erasemode','xor');
%% 绘制动画
aviobj=VideoWriter('HuaKuaiBai.avi');%新建叫example.avi的文件
open(aviobj); %打开
for i=1:length(t)
    set(gan,'XData',[z(i,3),x1(i)],'YData',[0,y1(i)]);
    set(kuai,'XData',[z(i,3)-0.05,z(i,3)+0.05],'YData',[0,0]);
    set(qiu,'XData',x1(i),'YData',y1(i));
    drawnow;
    currFrame = getframe;
    writeVideo(aviobj,currFrame);%动画存储
end
close(aviobj); %关闭

三、程序运行结果

滑块摆模型动画——物理MATLAB可视化

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值