Why I get the wrong peak from bode plot?

17 ビュー (過去 30 日間)
Bob 2016 年 3 月 20 日

%%Parameters
m1 = 2500; % (kg)
m2 = 320; % (kg)
k1 = 80000; % (N/m)
k2 = 500000; % (N/m)
b1 = 350; % (N*s/m)
b2 = 15020; % (N*s/m)
%%Transfer Function
num1 = [(0) (-m1*b2) (-m1*k2) (0) (0)];
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);
%%Resonant Frequency of Dynamic Model
bode(G1)
grid on;
[gpeak,fpeak] = getPeakGain(G1)
My resault is wrong according to the zoomed diagram.
gpeak =
20.9719
fpeak =
5.2516
According to the picture below I should get:
gpeak = 25 ~ 27
ZOOMED

サインインしてコメントする。

採用された回答

Rick Rosson 2016 年 3 月 20 日
The function getPeakGain returns the peak gain on an absolute scale, whereas the Bode plot displays the gain on a decibel scale.
gpeak_dB = 20*log10(gpeak);
and check the value. It should be approx 26.4, which is consistent with the Bode plot.
1 件のコメント表示非表示 なし
Bob 2016 年 3 月 21 日

Thank you, it works.
I have 2 Questions, I would appreciate it if you could answer me.
1) Can I change the units from Magnitude (dB) to Amplitude (m)?
2) How can I get the 2 peaks from the picture below? Because these commands gives me the only the highest.
[gpeak,fpeak] = getPeakGain(G1)
gpeak_dB = 20*log10(gpeak);

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by