使用fft从bfsk信号中提取数据

时间:2015-03-18 18:07:40

标签: android audio extract fft frequency

我有一个记录FSK信号的Android应用程序.FSK信号的模块化如下:采样率为8000,800Hz,用于比特' 1'比特' 0'和400Hz每个比特由160个样本表示,这意味着如果数据为101010,频率每0.02秒就会改变一次。

我使用以下模板来录制音频信号:https://stackoverflow.com/questions/23432398/audio-recorder-in-android-process-the-audio-bytes只有我将数据straithgly记录到ByteArrayOutputStream。 完成录制后,我将字节数组转换为规范化的双数组,我检查了这个函数并且它可以工作。

我的问题是我在这一点上陷入困​​境。我想解析数据(用不同频率编码的二进制位),我试着每次都发送到大小为128的双数组的fft块,我读了一些关于fft的东西,我明白128太小了现在我不知道从这一点开始如何进行。如果我理解正确,我需要分析2个接近的频率并了解我捕获的频率并解析相应的位并处理分析接下来的2个接近频率。我对如何实现这一目标一无所知。我尝试在谷歌搜索这个,甚至在这里搜索,没有找到我想要的东西.... 有什么想法/建议吗?

1 个答案:

答案 0 :(得分:2)

FFT分析长度为N的N / 2个频率,远远超过您的需要。

一个更好的算法可能正好是两个Goertzel滤波器,每个频率一个,长度为160.将滤波器滑动16个样本(将有10倍重叠),并寻找两个滤波器输​​出之间的最大差异或零检测。