Как я могу получить Резонансные Частоты (график Боде)? (Ответ системы 2-DOF)
Я хочу изучить реакцию системы.
Я хочу найти резонансную частоту подрессоренной массы (м1) и резонансную частоту неподрессоренной массы (м2).
Потому что я не уверен, понял ли я значение резонанса. Допустим, у нас есть система подвески, и мы стимулировали ее с шагом реакции 0,1(м).
Что означает, например, при 1(Гц) подрессоренной массе (m1), вибрирующей на высоком уровне? а при 10(Гц) неподрессоренная масса (м2) вибрирует на высоком уровне?
Я читал о сюжете Боде и сделал некоторые вещи, как вы можете видеть ниже, но я не знаю, является ли это способом найти резонансные частоты. Может быть, БПФ это то, что я ищу?
На моем боде сюжет (картинка ниже):
Синяя линия: первый пик соответствует резонансной частоте подрессоренной массы (м1)? и оранжевая линия: второй пик (который выше первого пика оранжевой линии) соответствует резонансной частоте неподрессоренной массы (м2)?
Если да, как я могу получить эти значения? Что мне нужно добавить в мой код?
Могу ли я изменить единицы с децибела на м?
clc;
clear all;
close all;
%% Parameters
m1 = 400; % Sprung Mass (kg)
m2 = 40; % Unsprung Mass (kg)
k1 = 21000; % Suspension Stiffness (N/m)
k2 = 150000; % Tire Stiffness (N/m)
b1 = 1500; % Suspension Damping (N*s/m)
b2 = 0; % Tire Damping Coefficient (N*s/m)
%% Transfer Function
num1 = [(0) (0) (b1*b2) (b1*k2+b2*k1) (k1*k2)];
den1 = [(m1*m2) (m1*b1+m1*b2+m2*b1) (m1*k1+m1*k2+m2*k1+b1*b2) (b1*k2+k1*b2) (k1*k2)];
G1 = tf(num1,den1); % G1(s) = X1(s)/Xr(s)
num2 = [(0) (m1*b2) (m1*k2+b1*b2) (b1*k2+b2*k1) (k1*k2)];
den2 = [(m1*m2) (m1*b1+m1*b2+m2*b1) (m1*k1+m1*k2+m2*k1+b1*b2) (b1*k2+k1*b2) (k1*k2)];
G2 = tf(num2,den2); % G2(s) = X2(s)/Xr(s)
%% Results
figure;
step(0.1*G1,0:0.01:5);
hold on;
step(0.1*G2,0:0.01:5);
title('');
legend('m1','m2');
xlabel('Time (s)');
ylabel('Amplitude (m)');
axis([]);
grid on;
figure;
bode(G1);
hold on;
bode(G2);
title('');
legend('m1','m2');
axis([]);
grid on;