实时的dsp.Audiorecorder的Matlab傅里叶变换

时间:2015-05-07 15:22:11

标签: matlab signal-processing fft audio-recording

我正在使用dsp.Audiorecord来获取实时麦克风输入。声音输入是一系列正弦波,频率范围从500到2000Hz不等。每一个都响起一秒钟。

我想知道实时知道当前罪的频率是多少,并使两个相同频率的罪之间的差异一个接一个地发生。这就是我使用dsp.Audiorecord

的原因

这就是我现在的代码:

Microphone = dsp.AudioRecorder;
tic;
while(toc<30)
    audio = step(Microphone);
    [x, indexMax] = max(abs(fft(audio(:,1)-mean(audio(:,1)))));
    indexMax
end

所有indexMax节目都是25到40左右的数字。显然有一个操作被遗漏,以便在[500; 2000]中检索原始频率。

我也尝试将dsp.FFT()直接应用于音频,但它告诉我:

Error using dsp.FFT/pvParse
Invalid property/value pair arguments.

如果还有其他方法可以在dsp.Audiorecorder上执行实时FFT,我真的很想知道。或者,只要你看到一种方法来完成我在这里所做的事情,那也会很棒。

1 个答案:

答案 0 :(得分:1)

要近似估计什么频率与哪个索引相关,您需要知道发送到FFT的数据的采样率(Fs)以及FFT的长度(N):

f ~= index * Fs / N

这是你遗漏的操作。