【问题标题】:How to normalize an array of frequencies如何标准化频率数组
【发布时间】:2019-03-02 00:55:54
【问题描述】:

我有两个音频文件来自一个文件,我将其分为一个“信号”文件和一个“噪声”文件——背景。我需要知道该录音的主要频率、分布模式或频率,以便能够比较不同动物发出的不同声音。

我对每个文件进行了一次fft,然后从信号中扣除了背景噪声。

我不在乎 20kHz 以下和 100kHz 以上对我来说会发生什么,它们是需要丢弃的噪音。

幅度是我无法控制的,所以每次录音都必须归一化。

标准化这些数据并使不同记录之间的比较具有统计可行性的最佳方法是什么?

function bindel=binset(raw_data_val,signal,noise)

    %in case all the recording is only noise
    if isempty(signal)
        bindel=nan;
        return
    end

    %frequancy of sampling
    %Fs= 250000;

    %extract the signal parts and noise parts
    %"signal" is an index array of all the elemnts of the 
    %"raw data" array that contain a signal
    signal_data=raw_data_val(signal);
    noise_data=raw_data_val(noise);

    %determine the size of the signal array
    L= size(signal_data,1);

    NFFT = 2^nextpow2(L(1,1));


    Y1 = fft(signal_data,NFFT)/L(1,1);

    del1=smooth(2*abs(Y1(1:NFFT/2+1)));

    Y2 = fft(noise_data,NFFT)/L(1,1);

    del2=smooth(2*abs(Y2(1:NFFT/2+1)));

    del=del1-del2;

    %combine the data into 125 bindels
    binsum=size(del)/125;
    bindel=zeros(1,125);
    for j=1:125,
        bindel(j)= sum(del((j-1)*floor(binsum(1,1))+1:j*floor(binsum(1,1))));
    end

    %%%deleting low freuqencies- testing filter set to change
    %%%everything bellow 20 khz to zero
    %%%normalizing between 1 to 0
    bindel(1:20)=0;
    bindel(100:end)=0;
    norm_bin=(bindel - min(bindel)) / ( max(bindel) - min(bindel) );


    bindel=norm_bin;

end

【问题讨论】:

    标签: matlab signal-processing normalization


    【解决方案1】:

    我认为没有最好的方法来标准化频谱数据(取决于您要回答的问题),但鉴于您不关心绝对幅度,而是我会依赖的主要频率的分布密度并通过光谱总和进行归一化:

    norm_bin = bindel / sum(bindel)
    

    我假设您比较的所有录音的 NFFT 都是相同的,如果不是这种情况,请考虑 NFFT:

    norm_bin = bindel / mean(bindel)
    

    【讨论】:

    • 所有录音中的NFFT配偶都一样吗?他们不是。每个音频剪辑的长度不同。那部分我没有完全理解,我得到了这个脚本半成品并继续工作。我会尝试你的建议,如果没有其他人可以添加它,我会关闭线程。谢谢
    • 如果您使用 Welch FFT,例如,即使记录的长度不同,您也可以让所有光谱具有相同的分辨率。您只需要设置 welch 窗口,使其至少适合您的任何录音。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2020-05-09
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多