任何一个数字滤波器都有幅频特性和相频特性,如果对于滤波不要求实时性,我们可以设计一种滤波器,使得它的相频特性始终为0,这种数字滤波器就称为零相移数字滤波器。

在Matlab中,零相移滤波器对应的函数名称为filtfilt,其帮助中提供的信息如下,翻译一下:

FILTFILT Zero-phase forward and reverse digital filtering.

Y =

FILTFILT(B, A, X) filters the data in vector X with the filter

described by vectors A and B to create the filtered data

Y. The filter is described by the difference

equation:

FILTFILT 零相移前向后向数字滤波器

Y = FILTFILT(B, A,

X)通过向量A,B描述的旅欧不起对数据向量X滤波得到滤波后的数据Y。滤波器可以通过差分方程描述如下:

y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)

- a(2)*y(n-1) - ... - a(na+1)*y(n-na)

After filtering in the forward direction, the filtered sequence

is then reversed and run back through the filter; Y is the time

reverse of the output of the second filtering operation. The result

has precisely zero phase distortion and magnitude modified by the

square of the filter's magnitude response. Care

is taken to minimize startup and ending transients by matching

initial conditions.

通过前向滤波之后,滤波序列被反折并且再次通过滤波器,Y是第二次滤波器输出的时间反折序列。其结果是相位特性精确的为零,没有变形并且幅频特性被滤波器幅频特性的平方所改变。初值和终值都被选择的很小的跳变来匹配初始条件。

The length of the input x must be more than three times the

filter order, defined as max(length(b)-1,length(a)-1). Note that

FILTFILT should not be used with differentiator and Hilbert FIR

filters, since the operation of these filters depends heavily on

their phase response.

输入序列x的长度必须大于滤波器阶数的三倍,阶数定义为max(length(b)-1,length(a)-1)。注意FILTFILT不应当被用于Hilbert

FIR滤波器,因为这些滤波器的相位特性是很重要的。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐