我正在寻找一段简单的(伪)代码,用于对采样音频信号进行频谱反演。最好使用C++编写。此代码应支持不同的采样率(16/32/48KHz)。
Fs/2
会交换高频和低频 - 可以想象将频谱绕单位圆旋转半圈。您可以通过将每隔一个样本乘以-1来实现此旋转。Fs/2
相当于混合 exp(j*pi*n)
。如果 x
是输入,y
是输出,y[n] = x[n] * exp(j*pi*n) = x[n] * [cos(pi*n) + j*sin(pi*n)]
这个问题很容易简化,因为sin(pi*n)
等于0,cos(pi*n)
交替等于1和-1。
使用余弦函数并没有太多意义。对于数字信号,这里不需要运行真正的环形调制器,在奈奎斯特频率下,余弦函数本质上就是一个方波。
所以你只需要将每个样本乘以*-1即可完成。
没有延迟,没有混叠,什么都没有。