我正在使用信号处理工具箱分析MATLAB中的大型Hyrphone数据集,我发现当我执行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;
谢谢