matlab - 声压降低一定 dB
问题描述
我正在使用信号处理工具箱在 MATLAB 中分析一个大型的hyrophone 数据集,我发现当我执行 PSD 或第三倍频程频带频率电平时,它们以 dB 为单位的电平偏移超过 30 或 40 dB。有人可以建议需要检查的主要或主要参数是什么。我确实输入了水的所有参考压力,系统端到端灵敏度,一切都正确。如果有什么我想知道的,我想知道。请在下面找到部分代码
xgrid = buffer(xbit,N,ceil(N*r),'nodelay').'; %buffer function breaks data into segments or frames as set by user
%grid whose rows are each (overlapped)
% segment for analysis
if xgrid(length(xgrid(:,1)),N) == 0 %remove final segment if not full
xgrid = xgrid(1:length(xgrid(:,1))-1,:);
end
M = length(xgrid(:,1)); %total number of data segments
xgrid = xgrid.*repmat(w/alpha,M,1);%multiply segments by Hann window function
%%computing DFT
X = abs(fft(xgrid.')).'; %DFT of each segment
%%computing power spectrum which is square of the amplitude
P = (X./N).^2;
%%Compute single-sided power spectrum
Pss = 2*P(:,2:floor(N/2)+1); %
f = floor(fs/2)*linspace(1/(N/2),1,N/2);
%calculate frequencies of DFT bins
flow = find(single(f) >= lcut,1,'first'); %low-frequency cut-off
fhigh = find(single(f) <= hcut,1,'last'); %high-frequency cut-off
f = f(flow:fhigh); %frequency bins in user-defined range
nf = length(f); %number of frequency bins
%% Compute noise power bandwidth and delta(f)
B = (1/N).*(sum((w/alpha).^2)); %noise power bandwidth
delf = fs/N;
%% Converting to dB
%for PSD calculation
APSD = 10*log10((1/(delf*B))*Pss(:,flow:fhigh)./(pref^2))-S;
谢谢,