Maximum of beamformed map does not equal square of peak amplitude of sine wave

93 views
Skip to first unread message

Emma Carline

unread,
May 26, 2023, 3:13:55 PM5/26/23
to Acoular-users
Dear Acoular developers,

I am trying to understand the units of the beamformed maps and would appreciate some clarification.  My understanding from the documentation is that the output of synthetic is the beamformed map with units of squared sound pressure, however, I am getting results with the SineGenerator that don't make sense. I am probably doing something stupid so please correct me. 
  • I used SineGenerator to test various point source frequencies and used the synthetic method of BeamformerBase to beamform at the same frequency as the sine wave. 
  •  I expected that the maximum value in the beamformed map would be the same as the amplitude of the sine wave when properly expressed in dB. However, the maximum value in the heatmap was consistently lower. 
  • I did realize that SineGenerator accounts for transmission loss due to spreading. It looks as though the assumption is spherical spreading. However, even when RectGrid is 1 m away from the array, the maximum of the beamformed map is about 6 dB lower than the amplitude of the sine wave.
Would someone be able to explain the reason for the difference? Are the beamformed map values rms rather than peak? Still, that would only account for 3 dB of loss which leaves 3 dB unaccounted for. 

I'm not sure if this is relevant, but I am using Acoular for underwater acoustics. So dB are referenced to 1 uPa. I did change the sound speed parameter in Acoular for underwater sound. 

I can post the code if requested. 

Best regards,
Emma

Ennes Sarradj

unread,
Jul 25, 2023, 7:56:23 AM7/25/23
to Acoular-users
Sorry for the late reply. Maybe you are still interested.
There is indeed a problem with the 'rms' trait of SineGenerator which is the (peak) amplitude, not RMS. This mean if this is set to 1, you get an RMS of 0.707.
Therefore, the maximum of the map is then 3dB less than what you would expect. You can check this using the modified code from the 'getting started' example below.
Another point that you have to be careful about is the FFT leakage. Depending on the sine frequency and the window setting, energy from one frequency will leak into neighbor frequency bin. In order to recover the correct energy you have to sum all those bins together. If you don't do so, you may get up to around 3-4 dB less in one single frequency bin.

Here is the code for the example. You will get 91dB = 0.7 Pa in 1 m distance. The result before computing the level is indeed  0.7^2 Pa^2. If you want the underwater decibel you have to redefine the L_p function with the proper reference value.

Cheers, Ennes

Ennes Sarradj

unread,
Jul 25, 2023, 9:38:48 AM7/25/23
to Acoular-users
I have to correct myself regarding the rms trait. From version 20.02, rms is indeed RMS and you can set the new ampltude trait (aka peak) which has a default of 1.0 (and thus RMS = 0.707)
Reply all
Reply to author
Forward
0 new messages