[Scilab-users] Identifying parameters of a multy frequency damped oscillation
Samuel Gougeon
sgougeon at free.fr
Mon Sep 7 22:50:58 CEST 2015
Hi,
Le 07/09/2015 14:26, Jens Simon Strom a écrit :
> Hi Scilab users,
> I want to analyse a microphone recording of the sound of a bell or gong. Given ia the equidistantly sampled sound pressure y(t) after a stroke for 10 s.
>
> The ansatz
>
> y=sum( A_i*exp(-d_i*t))*cos(2*%pi*f_i+alpha_i) ) for i=1,2,...5 or more
>
> is assumed to approximate the signal where A_i, d_i, f_i, and alpha_i are the unknown amplitudes, danping factors, frequencies, and phase angles of y. The analysis may be restricted to the lowest 5 frequencies fi.
> Does Scilab offer a method for this? FFT seems not to be adequate because the signal is aperiodic (silence after 10 s).
> Is nonlinear regression (with which I'm fmiliar) a promising way. The lowest frequencies can probably be concluded from a short time DFT where damping is negligible.
Numerical computing necessarily deals with sampled signals, yielding
sampled spectra. Now, there is a duality between sampling and
periodicity: Applying FFT to a sampled signal leads to a spectrum that
is periodic AND sampled. The fact that the spectrum is sampled means
that implicitly the signal you have processed has been assumed also
periodic. This is why boundaries of the sampled signal are of importance
: If due to a "bad cut" S($) is very different from S(1), then the
processing will see this cut as a discontinuity, and the FFT will yield
a non-negligible parasitic power in high frequencies.
On this point of view, your signal is fine : you start at a power 0
before hitting the gong, and you record the sound down to a very low
amplitude ~0 => it's OK.
The problem with a simple FFT here is the exp() envelop. The spectrum of
the "undamped signal" is convolved with the spectrum of exp(), which is
an exp(). You can write each d_i = D_i*f_i where D_i has no dimension.
Analysing this kind of signal has led sismologists to invent wavelet
analysis :)
If you don't want to use wavelet analysis instead, yes, you may try with
a non-linear regression, with 4*N parameters where N is the number of
frequencies you wish.
You will likely need a first guess:
* for d_i: just get the envelop of the total acoustic power fitted
with a single exp(-D*t), and set d_i_0 = D
* for f_i, alpha_i, A_i: get the FFT of your signal / exp(-D*t), and
get f_i_0, alpha_i_0 and A_i_0 from the most powerful harmonics.
Hope this help
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20150907/42f4a35e/attachment.htm>
More information about the users
mailing list