如何实现此等式给出的带通滤波器?

ch3*_*0ke 4 c audio signal-processing fft

我正在搞乱一些音频和算法我试图实现对等式给出的带通二阶FIR滤波器的调用

H(z) = z - z^(-1)
Run Code Online (Sandbox Code Playgroud)

如何在C中实现这样的带通滤波器?

我有原始音频数据以及可用于我的音频数据的FFT,但我仍然不确定如何实现此滤波器,我也不确定该等式的含义.

在下图中,我正在尝试实施HF3:

带通滤波器

Pau*_*l R 7

z^-1是一个单位(一个样本)延迟,z是未来的一个样本.因此,在样本筛选器输出i取决于输入采样的i-1i+1.(一般来说,你可以想到z^-n是一个n样本延迟.)

如果在输入缓冲区中有时域样本x[],并且想要将这些样本过滤到输出缓冲区y[],那么您将实现给定的传递函数,如下所示:

y[i] = x[i+1] - x[i-1]
Run Code Online (Sandbox Code Playgroud)

例如,在C中你可以处理N个样本的缓冲区,如下所示:

for (i = 1; i < N - 1; ++i)
{
    y[i] = x[i + 1] - x[i - 1];
}
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的一阶非递归高通滤波器 - 它在+1和-1处为零,因此在DC(0)和Nyquist(Fs/2)处的幅度响应为零,并且它在Fs处达到峰值/ 4.因此它是一个非常宽的带通滤波器.