Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在录音机中查找峰值频率_Android_Audio_Signal Processing_Fft_Android Audiorecord - Fatal编程技术网

Android 在录音机中查找峰值频率

Android 在录音机中查找峰值频率,android,audio,signal-processing,fft,android-audiorecord,Android,Audio,Signal Processing,Fft,Android Audiorecord,我需要连续地识别prek频率。我尝试了FFT和JTransform但是我没有得到正确的频率,而且它有很多噪声。我不知道该怎么纠正。我在谷歌上搜索过,不幸的是我没有找到合适的如果您有任何其他确定峰值频率的工作示例请与我们分享 谢谢。我仍然不确定您的输入信号是什么,或者您如何知道您从傅里叶分析和/或峰值检测器中得到了错误的峰值频率 一般来说,为了测试FFT,你需要一个合成的纯音,比如这个32Hz的余弦音 当你用FFT处理纯音时,你应该得到一个32赫兹的单峰,如下所示: 要测试峰值检测代码,您需要

我需要连续地识别prek频率。我尝试了
FFT
JTransform

但是我没有得到正确的频率,而且它有很多噪声。我不知道该怎么纠正。我在谷歌上搜索过,不幸的是我没有找到合适的
如果您有任何其他确定峰值频率的工作示例

请与我们分享


谢谢。

我仍然不确定您的输入信号是什么,或者您如何知道您从傅里叶分析和/或峰值检测器中得到了错误的峰值频率

一般来说,为了测试FFT,你需要一个合成的纯音,比如这个32Hz的余弦音

当你用FFT处理纯音时,你应该得到一个32赫兹的单峰,如下所示:

要测试峰值检测代码,您需要将32 Hz音调衰减为半功率,然后在64 Hz处添加另一个全功率纯音,如下所示:

当你用FFT处理这两个谐波时,你应该得到32和64赫兹的两个峰值,32赫兹的峰值应该是相对于64赫兹峰值的一半功率

在您的代码能够很好地处理上述合成信号之后,您应该尝试一个真正已知的信号,例如在原声吉他上弹奏的这一个E2音符:

E2音符信号的FFT频谱如下所示:

有了这个真实的信号,你的峰值功率检测器应该能找到161赫兹的峰值,这个信号恰好是E2音符的一次谐波。80 Hz时的较低功率峰值是E2音符的真实基频


合成信号和真实信号可以通过

生成,也许这篇博客文章会有所帮助。它是用C编写的,但有类似java代码的链接。你的测试输入是什么?你是如何计算频率的?你怎么知道结果是错误的?你的信号源是什么?您如何知道信号源的峰值频率?什么有很多噪音,你的输入信号还是频率分析的输出?我从