主要内容

过滤器

一维数字滤波器

描述

例子

y=过滤器(b一个x过滤输入数据x使用一个有理传递函数由分子和分母系数定义b而且一个

如果(1)不等于1,然后过滤器将滤波器系数归一化(1).因此,(1)必须是非零的。

  • 如果x是向量吗过滤器将过滤后的数据返回为与x

  • 如果x是矩阵吗过滤器沿着第一个维度进行操作,并为每一列返回过滤后的数据。

  • 如果x那么是多维数组吗过滤器沿着大小不等于1的第一个数组维度进行操作。

例子

y=过滤器(b一个x使用初始条件对于过滤器延迟。的长度必须等于max(长度(a)、(b)) 1

例子

y=过滤器(b一个x昏暗的沿着维度作用昏暗的.例如,如果x是矩阵吗过滤器(b, a, x,子,2)返回每行过滤后的数据。

例子

yzf= filter(___还返回最终条件zf的过滤器延迟,使用任何前面的语法。

例子

全部折叠

移动平均滤波器是平滑噪声数据的常用方法。本例使用过滤器函数沿数据向量计算平均值。

创建被随机噪声损坏的正弦数据的1 × 100行向量。

T = linspace(-pi,pi,100);rng默认的初始化随机数生成器X = sin(t) + 0.25*rand(size(t));

移动平均过滤器滑动一个长度窗口 w n d o w 年代 z e 沿着数据,计算每个窗口中包含的数据的平均值。下面的差分方程定义了一个矢量的移动平均滤波器 x

y n 1 w n d o w 年代 z e x n + x n - 1 + + x n - w n d o w 年代 z e - 1

对于窗口大小为5的情况,计算有理传递函数的分子系数和分母系数。

windowSize = 5;b = (1/windowSize)*ones(1,windowSize);A = 1;

找出数据的移动平均值,并将其与原始数据绘制成图。

Y = filter(b,a,x);情节(t, x)情节(t、y)传说(输入数据的过滤数据的

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示输入数据、过滤数据。

这个例子用下列有理传递函数过滤一个数据矩阵。

H z b 1 一个 1 + 一个 2 z - 1 1 1 - 0 2 z - 1

创建一个随机输入数据的2 × 15矩阵。

rng默认的初始化随机数生成器X = rand(2,15);

定义有理传递函数的分子系数和分母系数。

B = 1;A = [1 -0.2];

沿的二维应用传递函数x并返回每一行的一维数字滤波器。根据过滤后的数据绘制原始数据的第一行。

Y = filter(b,a,x,[],2);T = 0:长度(x)-1;%指数向量情节(t) x (1:))情节(t y(1:))传说(输入数据的过滤数据的)标题(的第一行

图中包含一个轴对象。标题为First Row的axes对象包含2个类型为line的对象。这些对象表示输入数据、过滤数据。

根据过滤后的数据绘制输入数据的第二行。

图(t,x(2,:))保持不变情节(t y(2:))传说(输入数据的过滤数据的)标题(“第二行”

图中包含一个轴对象。标题为Second Row的axes对象包含2个类型为line的对象。这些对象表示输入数据、过滤数据。

使用过滤器延迟的初始和最终条件来分段过滤数据,特别是在考虑内存限制的情况下。

生成一个大的随机数据序列,并将其分成两段,x1而且x2

X = randn(10000,1);X1 = x(1:5000);X2 = x(5001:end);

整个序列,x的垂直级联x1而且x2

定义有理传递函数的分子和分母系数,

H z b 1 + b 2 z - 1 一个 1 + 一个 2 z - 1 2 + 3. z - 1 1 + 0 2 z - 1

B = [2,3];A = [1,0.2];

过滤子序列x1而且x2一次一个。输出过滤后的最终条件x1在第一个段的末尾存储过滤器的内部状态。

[y1,zf] = filter(b,a,x1);

使用筛选的最终条件x1作为过滤第二段的初始条件,x2

Y2 = filter(b,a,x2,zf);

日元过滤后的数据来自哪里x1,y2过滤后的数据来自哪里x2.整个过滤序列是的垂直级联日元而且y2

同时过滤整个序列进行比较。

Y = filter(b,a,x);isequal (y, y1, y2)
ans =逻辑1

输入参数

全部折叠

分子系数有理传递函数,指定为一个向量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑
复数支持:金宝app是的

分母系数有理传递函数,指定为一个向量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑
复数支持:金宝app是的

输入数据,指定为向量、矩阵或多维数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑
复数支持:金宝app是的

过滤器延迟的初始条件,指定为向量、矩阵或多维数组。

  • 如果是一个向量,那么它的长度一定是max(长度(a)、(b)) 1

  • 如果是矩阵还是多维数组,那么前导维的大小一定是多少max(长度(a)、(b)) 1.的对应维度的大小必须匹配x.例如,考虑使用过滤器沿着第二个维度(Dim = 2)的3 × 4 × 5数组x.数组必须有尺寸[max(长度(a)、(b)) 1-by-3-by-5。

默认值,由[],初始化所有过滤器延迟为零。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑
复数支持:金宝app是的

操作的维度,指定为正整数标量。如果不指定维数,则默认为第一个大小大于1的数组维数。

考虑一个二维输入数组,x

  • 如果Dim = 1,然后过滤器(b, a, x,子,1)沿的列操作x并返回应用于每列的筛选器。

    筛选(b,a,x,zi,1)逐列操作

  • 如果Dim = 2,然后过滤器(b, a, x,子,2)的行进行操作x并返回应用于每行的筛选器。

    筛选(b,a,x,zi,2)逐行操作

如果昏暗的大于ndims (x),然后过滤器返回x

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

输出参数

全部折叠

过滤后的数据,作为与输入数据大小相同的向量、矩阵或多维数组返回,x

如果x是类型的,然后过滤器本机计算单精度,和y也是类型的.否则,y作为类型返回。

数据类型:|

过滤器延迟的最终条件,返回为向量、矩阵或多维数组。

  • 如果x是向量吗zf列向量是长度吗max(长度(a)、(b)) 1

  • 如果x那么是矩阵还是多维数组呢zf列向量的长度是多少max(长度(a)、(b)) 1,使列数在zf等于的列数x.例如,考虑使用过滤器沿着第二个维度(Dim = 2)的3 × 4 × 5数组x.数组zf有大小[max(长度(a)、(b)) 1-by-3-by-5。

数据类型:|

更多关于

全部折叠

有理传递函数

的输入-输出描述过滤器在z变换域中对一个向量的运算是有理传递函数。有理传递函数是这样的

Y z b 1 + b 2 z 1 + ... + b n b + 1 z n b 1 + 一个 2 z 1 + ... + 一个 n 一个 + 1 z n 一个 X z

它同时处理FIR和IIR滤波器[1]n一个反馈过滤器是有序的,和nb是前馈滤波器的阶数。由于归一化,假设一个(1) = 1。

你也可以把有理传递函数表示成差分方程

一个 1 y n b 1 x n + b 2 x n 1 + ... + b n b + 1 x n n b 一个 2 y n 1 ... 一个 n 一个 + 1 y n n 一个

此外,您可以使用其直接形式II转置实现表示有理传递函数,如下图所示。在这里,n一个= nb= n - 1

展示了阶n-1的IIR数字滤波器的直接形式II转置实现的框图。

操作过滤器在示例是由时域差分方程给出的

y b 1 x + w 1 1 w 1 b 2 x + w 2 1 一个 2 y w n 2 b n 1 x + w n 1 1 一个 n 1 y w n 1 b n x 一个 n y

提示

  • 使用过滤器函数与b系数从FIR滤波器,使用Y = filter(b,1,x)

  • 如果您有信号处理工具箱™,请使用Y = filter(d,x)对输入信号进行滤波x与一个digitalFilter(信号处理工具箱)对象d.生成d根据频率响应规范,使用designfilt(信号处理工具箱)

  • 看到数字滤波(信号处理工具箱)有关过滤函数的更多信息。

参考文献

奥本海姆、艾伦五世、罗纳德·w·谢弗和约翰·r·巴克。离散时间信号处理.上马鞍河,新泽西州:Prentice-Hall, 1999。

扩展功能

版本历史

R2006a之前介绍

另请参阅

|

主题