1

我有一个四分之一的汽车模型,它是一个带有阻尼器和弹簧的 2 自由度系统,带有以下代码和图表;

四分之一汽车模型

function dx = ode_2dof(t,x)
m1=500;
c1=1200;
k1=25000;
k2=15000;
m2=50;
dx=zeros(4,1);
dx(1)=x(2)
dx(2)=-(c1/m1)*(x(2)-x(4))-(k1/m1)*(x(1)-x(3))
dx(3)=x(4)
dx(4)=(c1/m2)*(x(2)-x(4))+(k1/m2)*(x(1)-x(3))-k2*x(3)
end

在这里,我尝试将输入作为道路条件。首先,我将步长输入设置为 0.5 秒后 0.01 米的高度,因此我将函数 dx(4) 更改为如下更改函数文件;

dx(4)=(c1/m2)*(x(2)-x(4))+(k1/m2)*(x(1)-x(3))-k2*(x(3)-y)

添加;

if y>0.5
y=0.01
elseif
y=0

在代码 dx=zeros(4,1) 和 dx(1)=x(2) 之间。

回想一下这个函数,我可以绘制 x1 和 x2(即汽车和轮胎)位移的图形,如下所示;

[t x] = ode45(@ode_2dof,[0 3],[0.7 0 0.35 0]) %initial position of the car and the tyre
x1_position=x(:,1);
x2_position=x(:,3);
figure
plot(t,x1_position,t,x2_position);
grid on
legend('x1 position','x2 position');

问题1,我有一个图表

图1

但这不是我想要的图表,我怎样才能得到 x1 稳定在 0.7 和 x2 分别在 0.35 作为初始条件的图表,而不是 0?

此外,我尝试更改 x1、k1 和 k2 值,以查看它如何通过分别更改函数文件中的 x1、k1 和 k2 值并单独保存来影响位移。

function dx = ode_2dof2700(t,x)
c1=2700

function dx = ode_2dof40000(t,x)
k1=40000

function dx = ode_2dof30000(t,x)
k2=30000

function dx = ode_2dofmix(t,x)
c1=2700
k1=40000
k2=30000

问题 2,我尝试在不同的图中同时绘制所有 x1 和 x2 的图形,如下所示;

[t x] = ode45(@ode_2dof,[0 5],[0.7 0 0.35 0])
x1_position=x(:,1);
x2_position=x(:,3);
[t x] = ode45(@ode_2dof2700,[0 5],[0.7 0 0.35 0])
x1_position_2700=x(:,1);
x2_position_2700=x(:,3);
[t x] = ode45(@ode_2dof40000,[0 5],[0.7 0 0.35 0])
x1_position_40000=x(:,1);
x2_position_40000=x(:,3);
[t x] = ode45(@ode_2dof30000,[0 5],[0.7 0 0.35 0])
x1_position_30000=x(:,1);
x2_position_30000=x(:,3);
[t x] = ode45(@ode_2dofmix,[0 5],[0.7 0 0.35 0])
x1_position_mix=x(:,1);
x2_position_mix=x(:,3);

figure
plot(t,x1_position,t,x1_position_2700,t,x1_position_40000,t,x1_position_30000,t,x1_position_mix);
grid on

但我有一个错误,向量数组必须匹配。它实际上是不同的,因为 x1_position 是 1361x1 而 x2_position_2700 是 1041x1 等。如何更改代码以匹配数组?

问题 3,如果我想设置一个幅度为 0.01 米的正弦输入,我应该如何更改输入?

谢谢

4

1 回答 1

0

我相信你的方程有一个小错误,你应该像这里一样除以 m

dudt(1) = u(2);
dudt(2) = -(c2/m2)*(u(2)-u(4))-(k2/m2)*(u(1)-u(3))-9.8;
dudt(3) = u(4);
dudt(4) = -(k1/m1)*(u(3)-y)+(k2/m1)*(u(1)-u(3))-(c1/m1)*(u(4)-yl)+(c2/m1)*(u(2)-u(4))-9.8;

这包括两个自由度中的阻尼,以便未来看到同样问题的人把事情做好!

于 2018-05-12T01:57:49.717 回答