首页 > 解决方案 > 声压降低一定 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;

谢谢,

标签: matlab

解决方案


推荐阅读