我想制作一个程序,可以将数据作为特定频率的脉冲传输,但不确定如何检测频率是否存在。
我认为我需要过滤掉所有不需要的频率,但我似乎找不到任何关于如何做到这一点的信息。
是否有任何库已经做到了这一点,或者我必须构建自己的库?有这样做的例子或类似的事情吗?
最佳答案
看起来您正在尝试实现 Modem ,并且强烈建议您查看用于此目的的经过验证的调制技术 - 通常 QPSK和 QAM 。您在问题中暗示的技术是幅度调制的粗略形式 - 本质上是用比特流调制给定频率的载波。 Heterodyning解调时可能是一个很好的起点。由于加窗的采样效应,使用 FFT 会产生较差的结果,从而导致带宽较差。
解调信号后您将面临的另一个实际问题是时钟恢复。原始比特流时钟很可能与接收器处的采样时钟异步。为了解码数据流,您需要恢复发送者的时钟(也就是说,它与本地时钟之间的关系)。一个Phased Lock Loop是实现这一目标的通常方法。
您还需要弄清楚如何检测比特流的开始 - 例如某种框架。
关于java - 从麦克风 Java 检测频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954144/