Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

filter

修改 timeseries 对象的频率成分

说明

tsout = filter(tsin,b,a)有理传递函数滤波器 b(z−1)/a(z−1) 应用于 timeseries 对象 tsin 中的均匀间隔数据。分子 b 和分母 a 是包含传递函数系数的向量。

tsout = filter(tsin,b,a,ind) 指定要滤波的列或行的索引。ind 是一个整数向量,其中的整数表示列向数据的列索引(tsin.IsTimeFirsttrue 时)或行向数据的行索引(tsin.IsTimeFirstfalse 时)。

示例

全部折叠

此示例将以下传递函数应用于一组数据:

H(z-1)=b(z-1)a(z-1)=2+3z-11+0.2z-1

基于 count.dat 中的矩阵 count 创建一个 timeseries 对象。

load count.dat
tsin = timeseries(count(:,1),[1:24]);

输入传递函数的分母和分子的系数。以 z-1 的升幂来对系数排序,以表示 1+0.2x2-3z-1

a = [1 0.2];
b = [2 3];

使用 filter 应用传递函数,并将原始数据与滤波后的数据进行比较。

tsout = filter(tsin,b,a);
plot(tsin)
hold on
plot(tsout)
legend('Original Data','Filtered Data','Location','NorthWest')

Figure contains an axes object. The axes object with title Time Series Plot:unnamed, xlabel Time (seconds), ylabel unnamed contains 2 objects of type line. These objects represent Original Data, Filtered Data.

输入参数

全部折叠

输入 timeseries,指定为标量。必须对 tsin 进行均匀采样。

数据类型: timeseries

传递函数的分子系数,指定为标量或向量。

传递函数的分母系数,指定为标量或向量。

行或列索引,指定为正整数数值标量或向量。ind 表示列向数据的列索引(tsin.IsTimeFirsttrue 时)或行向数据的行索引(tsin.IsTimeFirstfalse 时)。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

详细信息

全部折叠

有理传递函数

Z 变换域中这种 filter 运算的输入-输出说明是一种有理传递函数。有理传递函数采用如下形式:

Y(z)=b(1)+b(2)z1+...+b(nb+1)znb1+a(2)z1+...+a(na+1)znaX(z),

它可同时处理 FIR 和 IIR 滤波器 [1]na 是反馈滤波器阶数,nb 是前馈滤波器阶数。

还可以将有理传递函数表示为下列差分方程:

a(1)y(L)=b(1)x(L)+b(2)x(L1)+...+b(nb+1)x(Lnb)a(2)y(L1)...a(na+1)y(Lna).

此外,也可以使用如下图所示的 direct-form II 转置实现表示有理传递函数。此处,na = nb = n-1。

Block diagram that illustrates the direct-form II transposed implementation of an IIR digital filter with order n-1.

filter 在样本 m 处的运算由时域差分方程给定

y(m)=b(1)x(m)+w1(m1)w1(m)=b(2)x(m)+w2(m1)a(2)y(m)       =                 wn2(m)=b(n1)x(m)+wn1(m1)a(n1)y(m)wn1(m)=b(n)x(m)a(n)y(m).

参考

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999.

版本历史记录

在 R2006a 之前推出

另请参阅