I have a pressure signal from a Fluent FFowcs-Williams Hawkings acoustics analysis.

I converted this pressure signal into the frequency domain in order to get SPL values, using Matlab. I used the amplitude of the FFT:

A = fft(s10);        %Amplitude
B = abs(A);          %Magnitude of amplitude (complex numbers to real)
C = B/L;             %Normalize amplitude by dividing by number of samples
D = C(1:fix(L/2)+1); %Select one half of 2-sided spectrum
E = 2*D;             %Compensate for loss of energy by taking only 1 half of spectrum
F = E/sqrt(2);       %Rms of amplitude

SPL = 20*log10(F/Pref);

As far as I can see, Fluent uses the Power Spectral Density of the FFT to calculate SPL, instead of using the amplitude. The results of this calculation corresponds to what Fluent does in its FFT:

A = fft(s10);                 %Amplitude
G = A(1:fix(L/2)+1);          %Select 1-sided spectrum
PSD = (2*(abs(G)).^2)/(Fs*L); %Compensate for loss of energy by multiplying by 2; scale by
                              %dividing by Fs and L; square
SPL2 = 10*log10(PSD/(2e-5)^2);

When plotting these two different sets of results, there is a constant difference between the SPL values of the two signals. In this case it's a 12.0377 dB shift.

enter image description here

My question is, which of these two methods is the correct one to use in order to calculate SPL, and why? Or have I made a mistake in my calculations?

Help would be much appreciated!!

  • $\begingroup$ I use pwelch function. Did you try this $\endgroup$ – 陈冠江 Jun 1 '20 at 14:30

In amplitude method, you didn't divide by sampling frequency. In PSD method you divided by sampling frequency. This is the only difference between the two methods. I think because of that, there is a difference in the value. This may help. Suggest me, if I'm wrong.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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