MATLAB 中的 Filter 函数

2025 年 7 月 26 日 | 8 分钟阅读

引言

MATLAB 中的 filter() 函数用于对数据信号进行数字滤波。它通过对输入数据执行连续的数学运算来完成此操作,其中系数决定了其滤波特性。由于其按顺序处理信号的能力,该函数非常适合任何信号处理应用。

filter() 函数的一般语法是

y = filter(b, a, x);

其中

  • b 和 a 是滤波器传递函数的变量。
  • 在这种情况下,输入信号由 x 表示。
  • y 是应用滤波器后的输出信号。

此函数可帮助用户根据需求选择低通滤波器、高通滤波器、带通滤波器和带阻滤波器等滤波器。

滤波在信号处理中的重要性

  • 降噪: 滤波器有助于降低可能干扰音频甚至生物医学等精细功能中信号的有害高频噪声。
  • 信号增强: 因此,滤波器消除了不需要的频率,这使得信号由于突出特征的定义而更易于解释。
  • 数据平滑: 滤波器可以平滑数据中的突然波动,这对于分析随时间推移的一系列数据点或为机器学习模型准备输入非常重要。
  • 频率隔离: 滤波器选择精确的频率部分,以便分析或更改信号的某些方面。

MATLAB 滤波函数在各个领域的应用

  1. 音频处理
    • 消除录制音轨中的噪音。
    • 改善特定频率以进行均衡。
    • 分析音乐和语音领域中使用的信号。
  2. 通信系统
    • 通过信号滤波分析无线通信系统干扰抑制。
    • 数字通信中的基本处理:信号解调。
    • 信道结构的第三个变化是在接收器中实现信道均衡。
  3. 生物医学信号处理
    • 消除心电图和脑电图中的噪声。
    • 划分心率或脑电波信号中的频段。
    • 通过排除伪影提高诊断效率。
  4. 控制系统
    • 对原始传感器数据进行数字滤波,以消除系统意外和不可预测的行为。
  5. 金融数据分析
    • 进一步提高股票数据的规律性,以改善股票趋势预测。
    • 降低时间序列金融数据中的噪声。
  6. 图像和视频处理
    • 应用滤波器进行边缘检测和特征提取
    • 基于从过去经验中学习的故障检测。

滤波器基础

滤波器是信号处理的基础,其目的是通过放大某些频率或抑制其他频率来处理信号。滤波器被定义为一种信号处理工具或技术,它要么抑制要么通过信号的频率。滤波器广泛应用于各个领域,包括音频处理、通信和信号处理以及生物医学工程。

过滤器的类型

  1. 低通滤波器 (LPF)
    • 允许低频通过,同时抑制高频
    • 使用移动平均滤波器进行滤波、信号平均,用于音频信号的噪声信号。
    • 在生物医学应用中,针对高密度频率噪声对心电图信号噪声进行滤波。
  2. 高通滤波器 (HPF)
    • 让部分高频范围的信号通过,同时衰减部分低频范围的信号。
    • 消除低频出现的噪音,例如音频信号中的电源线干扰。
    • 在音频信号处理过程中增强高频音频信号。
  3. 带通滤波器 (BPF)
    • 允许给定频带内的信号通过,同时衰减所有其他频率。
    • 需要过滤特定频率范围的航空航天应用。
    • 在收音机调谐器中选择电台。
  4. 带阻滤波器(陷波滤波器)
    • 降低某个限制范围内的一些频率,同时让位于不同范围内的其余频率通过。
    • 去除噪音中的某个频率,例如 50/60Hz 电源线噪音。
    • 消除音频轨中电气设备产生的嗡嗡声。

数字滤波器与模拟滤波器

  1. 模拟滤波器
    • 主要由电阻、电容器和电感器等物理元件使用。
    • 直接作用于第一类连续时间信号。
    • 通常在硬件实现的系统中实现。
  2. 数字滤波器
    • 处理由代数算法执行,并通过离散时间信号的程序代码实现。
    • 与模拟滤波器相比,具有更高的灵活性、速度、精度和可调性。
    • MATLAB 结合使用,用于实时系统中的仿真。

比较表

方面模拟滤波器数字滤波器
实施物理组件算法/软件
灵活性有限高度可定制
噪声敏感度对元件噪声敏感不太敏感
应用传统和硬件系统现代和软件系统

滤波器的关键参数

  1. 顺序
    • 显示某个滤波器过滤的难度。
    • 高阶滤波器因此具有更陡峭的滚降速率和更好的频率选择性。
    • 示例:正如预期,与 2 阶滤波器相比,4 阶低通滤波器在截止频率之外提供更陡峭的滚降频率。
  2. 截止频率
    • 它从通带切换到阻带的频率,也称为带宽。
    • 指定信号频率的范围,这些频率将被滤波器接受或不被接受。
    • 示例:如上图所示的低通滤波器,用于滤除所有频率高于 100 Hz 的信号。
  3. 收益
    • 放大或衰减因子表示此处的信号。
    • 以分贝 (dB) 为单位测量。
    • 示例:还观察到,通带中 10 dB 的增益使滤波信号的电平增加了大约 3.16 倍。

MATLAB 中 filter() 函数的语法和功能

MATLAB 中的 filter() 是一个非常通用的工具,用于使用数字滤波器处理输入信号。这种处理技术将卷积应用于输入信号和所需的滤波器系数,以根据所需的滤波操作改变信号。

1. MATLAB 中 filter() 函数的语法

  • b:滤波器分子系数向量。
  • a:滤波器分母系数向量。
  • x:要滤波的输入信号。
  • y:滤波后的输出信号。

2. 输入参数

  • 分子系数 (b): 解释滤波器前馈部分的含义。这些系数表示输入信号样本的比例,也可以称为其幅度。
  • 分母系数 (a): 它仍然定义滤波器的反馈部分。这些系数定义了输出的前一个样本对输出当前样本的影响程度。
  • 对于 FIR 滤波器(有限脉冲响应)实例,设置 a = 1,并且只提及分子的系数 b。
  • 在 IIR 滤波器中,它们同时使用 b 和 a。
  • 输入信号 (x): 它是需要滤波的信号,以向量形式表示。根据不同的应用,它可以是一维或多维数组

3. filter() 函数的输出

  • 输出 y 是滤波后的信号,计算方式如下
Filter Function in MATLAB
  • 完成后,信号是已叠加在输入信号上的滤波器系数的回响。

4. 简单滤波示例代码

示例:低通滤波噪声信号

  • 滤波器系数: 分子中的系数 b 或分母中的系数定义了一个简单的移动平均滤波器,a = 1 检查 FIR 滤波器。
  • 输入信号: 输入信号是受高斯噪声污染的纯正弦波。
  • 滤波: filter() 函数通过抛弃中心值并平均其旁边的样本来降低信号中的噪声。
  • 可视化: 两个子图显示了原始信号和滤波信号之间的比较,以解释低通滤波器的使用。

在 MATLAB 中设计滤波器

一般而言,滤波器的选择是信号处理应用中的一个重要里程碑,它使用户能够构建具有精确所需规格的滤波器,并根据频率特性、相位和稳定性进行定制。为了高效设计滤波器,MATLAB 提供了可靠的函数。

使用设计函数创建滤波器系数

MATLAB 提供了几种针对特定滤波器类型(IIR 和 FIR)的滤波器设计函数。所有函数都旨在计算所需滤波器的系数,以实现更准确的解决方案。

1. 巴特沃斯滤波器 (butter)

巴特沃斯滤波器在通带中具有零响应,并且几乎是一条垂直直线。它非常适合需要平滑度等参数的应用。

语法

  • n:滤波器阶数。
  • Wn:归一化截止频率(0 到 1)。
  • 'type':滤波器类型('low'、'high'、'bandpass'、'stop')。

示例

2. 切比雪夫滤波器 (cheby1 和 cheby2)

切比雪夫滤波器以通带(cheby1)或阻带(cheby2)中的振荡为代价,提供更陡峭的过渡。

切比雪夫 I 型语法

  • Rp:通带纹波(dB)。

切比雪夫 II 型语法

  • Rs:阻带纹波(dB)。

示例

3. 椭圆滤波器 (ellip)

椭圆滤波器在给定阶数下具有最高的选择性,但其幅度响应不理想,通带和阻带都有纹波。

语法

  • Rp:通带纹波(dB)。
  • Rs:阻带纹波(dB)。

示例

4. FIR 滤波器 (fir1 和 fir2)

FIR 滤波器始终稳定,并具有几乎线性的相位响应。MATLAB 提供了两个 FIR 滤波器设计函数。

使用 fir1

使用窗函数法创建滤波器。

  • window:窗函数(例如 hamming、hann)。

示例

使用 fir2

提供一种更灵活的方法来创建具有任意频率行为的滤波器。

  • f:频率向量。
  • m:幅度响应向量。

示例

使用 fvtool 可视化滤波器响应

可以使用 MATLAB 的 fvtool 工具进一步分析设计滤波器的频率响应、相位响应、脉冲响应和其他特性。

语法

  • 对于 FIR 滤波器 (a = 1),使用

示例

fvtool 的主要特点

  • 用于表示幅度和相位响应的图。
  • 时间图和频率响应图。
  • 群延迟和极点-零点图。
  • 一个滤波器与多个滤波器的比较。

下一主题Matlab 冒号