我正在使用此功能在 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 波特?