用MATLAB做一个单摆运动的动画

用MATLAB做一个单摆运动的动画

MATLAB与单摆运动

MATLAB在机械机构分析和数值理论计算中中应用广泛。倒立摆系统的设计与弹簧振子设计类似,本文将利用MATLAB脚本建立单摆运动的动画演示。

代码的实现

简单点,说话的方式简单点,编程如下:
%% 挂摆衡梁
h = figure(‘numbertitle’,‘off’,‘name’,‘擦除动画显示(挂摆衡梁)-matlabfan’)

%% 绘制横梁
plot([-0.2;0.2],[0;0],’-k’,‘linewidth’,20);

%% 画初始位置的单摆

g=0.98; %重力加速度,可以调节摆的摆速
l=1; %摆长
theta0=pi/4; %初始位置角
x0=lsin(theta0); %初始x的位置
y0=-l
cos(theta0);

axis([-0.75,0.75,-1.25,0]);
axis off

%% 创建摆锤
head = line(x0,y0,‘color’,‘r’,‘linestyle’,’.’,‘erasemode’,‘xor’,‘markersize’,40);
%擦除模式为xor
%% 创建摆杆
body = line([0;x0],[-0.05;y0],‘color’,‘b’,‘linestyle’,’-’,‘erasemode’,‘xor’);
%% 摆的运动
t=0; %时间变量
dt=0.01; %时间增量

while 1
t=t+dt;
theta=theta0cos(sqrt(g/l)t); %单摆角度与时间的关系
x = l
sin(theta);
y =-l
cos(theta);
if ~ishandle(h),return,end
set(head,‘xdata’,x,‘ydata’,y); %改变擦除对象的坐标数据
set(body,‘xdata’,[0;x],‘ydata’,[-0.05;y]);
drawnow; %刷新屏幕
end

运行结果如下

由于小球一直在动,截图时候总是显示不了摆杆,有一点点尴尬。
用MATLAB做一个单摆运动的动画

结束语

做这一个小测试玩一玩,仅供学习与交流。