[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