音频信号中的峰值检测

时间:2014-02-18 14:08:39

标签: matlab audio signal-processing fft

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

1 个答案:

答案 0 :(得分:0)

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

如果您可以完成此操作,如果您想要一个唯一的峰值,最大值,只需使用函数max。如果不是,你可以个性化你要找的东西,

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

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

然后pks是你的ylocs是你的x坐标高峰。

编辑:

关于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幅度信号。