I've tried to calculate the parameters of a damped spring mass system of the form

$m~ y''(t)+d~y'(t)+c~y(t)=F(t)$

but I have some problems determining the mass m of the system.

The damped spring mass system is given by a MATLAB function


where F is the input force vector and Td the sampling period. The output of the function is already corrupted by noise.

First, I considered the steady state solution for an input force of

$ F(t) = B\cdot \cos(\omega t)$

$\Rightarrow y_p(t) = \frac{B}{\sqrt{(c-m \omega)^2+d^2\omega^2}}\cos(\omega t-\theta)$.

I get the largest response for $\omega=\omega_0=\sqrt{\frac{c}{m}}$, which is the natural resonance frequency. I estimated this parameter the following using the Power Spectral Density:

NDFT = 2^10;
h = hann(NDFT);
[Pxx,W] = pwelch(F_n,h,NDFT/2,NDFT);
[Pyy,W] = pwelch(y_mean,h,NDFT/2,NDFT);

Ha = sqrt(Pyy./Pxx);
Ha_dB = 20*log10(abs(Ha));

where F_n is white Gaussian noise and y_mean is the ensemble average for 500 realizations. The maximum value should correspond to resonance at the natural frequency $\omega_0$, right?

The second step is the determination of the homogeneous solution:

$y(t) = C\cdot e^{-\gamma t} \cos(\omega_d t + \varphi)$

For the homogenous solution I created an input force vector of

F = [30*ones(1000,1);zeros(1000,1)];

I estimated $\omega_d$ by taking the FFT after averaging the output $y(t)$. The parameter $\gamma$ I get from determining the envelope of the damped sinusoidal signal using Hilbert transform, taking the log and performing a least square fit using polyfit.

Using the formulas
$\gamma = \frac{d}{2m}$
$\omega_d = \sqrt{\omega_0^2-\gamma^2}$
$\omega_0 = \sqrt{\frac{c}{m}}$

I can calculate the parameters $\frac{d}{m}$ and $\frac{c}{m}$. But how do I get a value for the mass m?

  • $\begingroup$ "The output of the function is already corrupted by noise." What do you mean? Are you simulating it with noise, is it from actual measurements, it has unexpected scrud that you're interpreting as noise? Or something else? $\endgroup$
    – TimWescott
    Commented Dec 20, 2019 at 1:36
  • $\begingroup$ It is implemented as a simulink simulation and we have to analyze it in this course. And white noise is added to the output. $\endgroup$
    – Phobos
    Commented Dec 20, 2019 at 8:28

1 Answer 1


I think I got the answer: I look at the step response of the system.

$H(s) = \frac{1}{ms^2+ds+c}$

The limit of the step response equals my parameter $1/c$

$y(\infty)=\lim_{s\rightarrow 0} s\cdot \frac{1}{s} \cdot H(s) = \frac{1}{c}$

Using $c$ and $c/m$ from the measurements above I can calculate the mass $m$.

I hope this is right, but the results look reasonable...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.