前言
Matlab是进行数值计算的重要工具,更是科学研究中非常强大的辅助工具,其不仅在数值计算、数据绘图、科学仿真等方面广泛应用,而且在科研中一些动态模型的绘制也可以用其实现。本文就以弹簧—阻尼振动模型为例,使用Matlab软件制作动态的弹簧—阻尼振动模型。
绘制振动模型需要了解到其组成部分,振动模型共有四部分组成:地基、弹簧、阻尼器、质量块。其中弹簧、阻尼器和质量块要实现振荡运动。一下为各组成部分使用Matlab代码实现过程。
地基模型
地基模型使用实线段表示 ,代码如下:
%绘制地基线段
hold on;
axis([-1 6 -5 10]);%设置轴坐标
plot([0 1 1 1 4 4 4 5],[0 0 1 0 0 2 0 0],'Color',[0.6,0.2,0.2],'LineWidth',2.5);
plot([3.4 3.4 4.6 4.6],[3.5 2 2 3.5],'Color',[0.6,0.6,0.2],'LineWidth',1.5);
弹簧模型
弹簧模型使用折线段表示,代码如下:
%绘制弹簧
H=1:0.2:6;
num=length(H);
x=mod(1:num,2)*2;
x(1)=1;
x(end-3:end)=1;
K=plot(x,H);
阻尼器模型
代码实现如下:
%绘制阻尼器
cx=[4 4 3.45 4.55];
cy=[6 2.75 2.75 2.75];
C=plot(cx,cy,'Color',[0.6,0.6,0.2],'LineWidth',2);
质量块模型
质量块使用长为5,宽为2的矩形表示,代码如下:
%绘制质量块
mx=[0 5 5 0 0];
my=[6 6 8 8 6];
M=fill(mx,my,[0.9 0.9 0.9]);%填充颜色
模型动态实现
弹簧—阻尼振动模型中需要运动的部分是弹簧、阻尼器和质量块,振动的往复周期实现使用正弦函数sin(pi*T)实现,T为振动时间,代码如下:
%实现动态画面
T=0;
td=[];
yd=[];
while T<20
pause(0.2);
Kd=1-sin(pi*T)/12;%振荡循环
Y=1+(H-1)*Kd;%弹簧下端固定
yd=[yd,Y(end)];
set(K,'ydata',Y);
set(C,'ydata',cy-cy(1)+Y(end));
set(M,'ydata',my-my(1)+Y(end));
T=T+0.1;
end
结果显示
以上为本文的全部内容,更多关于matlab方面的知识,可多多讨论。