# Damped spring mass system - parameter estimation

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

y_out=mass_spring_system(F,Td),

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?

• "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? – TimWescott Dec 20 '19 at 1:36
• It is implemented as a simulink simulation and we have to analyze it in this course. And white noise is added to the output. – Phinie Dec 20 '19 at 8:28

$$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$$.