首页 文章

音频信号中的峰值检测

提问于
浏览
0

我需要使用matlab找到音频信号的最大峰值 . 我使用 wavread 命令获得输入,并使用FFT将信号转换为频域 . 找到它的大小后,我需要存储峰值以便进一步计算 . 我怎样才能做到这一点?

1 回答

  • 0

    我猜你的 IN_MAG 不是真正的向量,这意味着你要存储FFT的实部和虚部 . 我建议你阅读matlab文档的 doc fft ,这样你就可以创建一个合适的向量 .

    如果你想完成这个,如果你想要一个独特的峰值,最大值,只需使用函数 max . 如果不是,你可以个性化你找到的东西,

    假设找到最小高度为0.5且距离彼此相距10个点的前3个峰值,

    [pks, locs] = findpeaks(IN_MAG, 'NPEAKS', 3, 'MINPEAKHEIGHT', 0.5, 'MINPEAKDISTANCE', 10);
    

    那么 pks 就是你的 ylocs 是你的峰值的共同点 .

    编辑:

    至于FFT,

    我们说 sig 是你的信号,

    t = linspace(0,L/Fs,L); % Fs is the sampling rate in Hz and L the signal length
    
    NFFT = 2^nextpow2(L);
    f = Fs/2*linspace(0,1,NFFT/2+1);
    
    fft_sig = fft(sig, NFFT)/L;
    
    magnitude_sig = = 2*abs(fft_sig(1:NFFT/2+1));
    

    这是你正确的fft幅度信号 .

相关问题