【问题标题】:AFSK Demodulation in AndroidAndroid 中的 AFSK 解调
【发布时间】:2013-04-05 07:30:01
【问题描述】:

我正在使用这个函数在 Android 中调制我自己的 AFSK 信号

public static double[] MyFSK(char bit) //bit 1 or 0
{
    double[] a = new double[SamplesPerBit]; // SamplesPerBit =  44100 / 1200 (baudrate)
    for (int i = 0; i < a.length ; i++)
    {           
        if(bit == '1')
            a[i] = Math.sin(2 * Math.PI * i * C.FreqHigh / SamplesRate);
        else
            a[i] = Math.sin(2 * Math.PI * i * C.FreqLow / SamplesRate);
    }
    return a;
}

现在我的问题是解调部分,我成功使用 FFT 算法找到频率,但 FFT 的缺点是它需要很长的数据流(1024-2048 个样本)才能找到频率,这导致非常低波特率。

那么有没有更合适的方法来找到具有较低样本数的频率?让我处理 1200 波特?

【问题讨论】:

    标签: android signal-processing


    【解决方案1】:

    对于您的用例,Goertzel 算法需要的样本少得多,并且比 FFT 的性能更高。它可用于区分两个或多个已知频率。这是关于它的 PDF(包括代码示例)...

    http://www.cs.washington.edu/education/courses/cse466/12au/calendar/Goertzel-EETimes.pdf

    【讨论】:

    • 不幸的是,代码示例已经消失了。当您没有将代码放入实际文档中,或者您将文档发布到您无法保证会保留在网络上的某个地方时,就会发生这种情况。
    • 好吧,我试了一下。有用;但即使是非常慢的波特率也毫无用处。在 45.45 波特和 170 HZ 频率到频率下,它需要太多的样本来解析 bin,甚至希望跟上数据。这更像是一种好奇心或适合检测是否有人按住按键或其他东西的东西。对于数据,它的速度非常慢。
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多