我在输入端有一个音频块流,每个有 64 个样本。
将前一个样本块发送到输出,即延迟一个块,意味着应用单位增益 FIR 滤波器?
out[n] = 0 * in[n - 0] +
0 * in[n - 1] +
0 * in[n - 2] +
...
1 * in[n - 64].
这个滤波器的频率响应是多少?
这种设计有用例吗,还是没有意义?
我在输入端有一个音频块流,每个有 64 个样本。
将前一个样本块发送到输出,即延迟一个块,意味着应用单位增益 FIR 滤波器?
out[n] = 0 * in[n - 0] +
0 * in[n - 1] +
0 * in[n - 2] +
...
1 * in[n - 64].
这个滤波器的频率响应是多少?
这种设计有用例吗,还是没有意义?
是的,这会适当地将输入延迟 64 个样本,但请注意,您可以简单地执行以下操作:
这对您来说可能很清楚,您只是想展示它与 65 抽头 FIR 的关系,其中所有抽头 = 0,除了最后一个。
FIR 滤波器的系数代表了滤波器的脉冲响应(严格来说,我们称之为“单位样本响应”)。在这种情况下,脉冲响应是延迟脉冲。延迟(时移)脉冲的傅立叶变换在频率上具有全为 1 的幅度响应,以及延迟等于相位斜率的线性相位响应,根据:
在哪里是以弧度为单位的相位,并且是以弧度/秒为单位的弧度频率。
我们从离散时间傅里叶变换的时移属性中特别看到了这一点:
您可以使用 Octave 或 Matlab 快速绘制频率响应,如下所示:
freqz([zeros(1,64) 1])
结果如下:
使用这样的线性相位滤波器,信号不会被滤波器失真,只会延迟。有关更多信息,请参阅这篇文章:为什么线性相位很重要