FIR滤波器输出的有意义的输出

信息处理 过滤器 有限脉冲响应 过滤
2022-02-07 01:32:40

我已经使用抽头延迟线方法实现了 FIR 滤波器。一旦第一个输入样本传递给它,我就开始获得输出,我想知道从哪个样本中我将从过滤器获得正确的输出(没有瞬态输出)。

它取决于最大幅度抽头的位置还是仅取决于滤波器的长度。我使用的滤波器系数的数量是 N(奇数)和对称的。为了验证,我以以下过滤器抽头为例:-

F1 = [1000000];

F2 = [0100000];

F3 = [0010000];
依此类推,如果我使用滤波器系数通过正弦波F1那么输出的第一个样本本身是有意义的,但如果我使用F2F3那么有意义的输出分别来自第二个和第三个输出样本。我也想知道matlab如何命令filter()作品。

2个回答

如果它是线性相位FIR 滤波器,则输入信号将在输出端偏移(延迟)一定量的群延迟

对于长度为的线性相位 FIR 滤波器L=2K+1群延迟将是N=K样品。长度均匀L=2KFIR 滤波器将在N=(L1)/2; 半样本位置。

对于非线性相位 FIR 滤波器,群延迟将取决于所应用输入信号的特定频率。它应该从计算

τ=dϕ(ω)dω

在哪里ϕ(ω)是滤波器的相位响应。

matlab 函数filter(b,a,x)计算从输入信号长度开始的所有样本。所以第一个样本是瞬态的。

这取决于您所说的“有意义”是什么意思。所有输出都是有意义的,因为它们将当前输入值与过去的输入值结合在一起。最初,当然没有过去的输入样本。但是,如果您同意“没有过去的样本”意味着“具有零值的过去样本”,那么如果延迟元素用零初始化,就会发生这种情况。如果对给定应用程序更有意义,也可以使用任何其他值初始化延迟元素。

Matlab的filter例程只是实现了一个具有有理传递函数的滤波器的直接form-II转置结构(通常是IIR,但FIR是一个特例)。默认情况下,延迟元素用零初始化,但可以提供其他初始条件。