从压力信号计算 SPL - 幅度与功率法

信息处理 matlab 傅里叶变换 功率谱密度 振幅 声学
2022-02-09 15:38:24

我有来自 Fluent FFowcs-Williams Hawkings 声学分析的压力信号。

我使用 Matlab 将此压力信号转换为频域以获得 SPL 值。我使用了 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);

据我所知,Fluent 使用 FFT 的功率谱密度来计算 SPL,而不是使用幅度。此计算的结果对应于 Fluent 在其 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);

在绘制这两组不同的结果时,两个信号的 SPL 值之间存在恒定的差异。在这种情况下,它是 12.0377 dB 的偏移。

在此处输入图像描述

我的问题是,这两种方法中哪一种是计算 SPL 的正确方法,为什么?还是我的计算有误?

帮助将不胜感激!

1个回答

在幅度方法中,您没有除以采样频率。在 PSD 方法中,您除以采样频率。这是两种方法之间的唯一区别。我认为正因为如此,价值存在差异。这可能会有所帮助。建议我,如果我错了。