如何在实时信号的 FIR 带通滤波器中摆脱瞬态响应?
Posted
技术标签:
【中文标题】如何在实时信号的 FIR 带通滤波器中摆脱瞬态响应?【英文标题】:How to get ride of transient response in FIR bandpass filter of real-time signal? 【发布时间】:2021-11-03 18:33:16 【问题描述】:我正在尝试为一个俱乐部项目自学数字滤波器设计。我需要对模拟数据进行采样并使用带通滤波器通过 20-40kHz。我使用 MATLAB 为 FIR 滤波器生成抽头,并使用这些系数在 C 语言中实现了一个滤波器。目前,我正在处理一组样本数据,只是为了让我的过滤器启动并运行,但最终这将是来自 ADC 的流式数据。
现在在 MATLAB 和我的代码中,过滤后的数据在输出样本数据的开头都有一个瞬态响应。由于我是数字滤波器领域的新手,我有两个问题:
这种短暂上涨背后的原因是什么?有没有办法以不同的方式梳理数据以消除这种瞬态以进行实时分析?
我需要测量 ping 击中两个不同的水听器之间的时间差,因此我过滤数据的开头非常重要。
这是我的响应的 sn-p:(输入是幅度为 1 的 40kHz 正弦波)
使用模拟滤波我认为这不会有太大问题,但如果我对实时数据的缓冲区数组执行相同的过程,输出数据的每次迭代都会保持这种瞬态。
【问题讨论】:
瞬态正常。您可以将过滤器响应视为最初用零填充的“单元格”链。在每个样本周期,一个新样本进入单元链,现有样本移动一个单元。所以需要一个等于滤波器长度的时间来达到稳定状态,即所有单元格都已经包含信号值 【参考方案1】:消除 FIR 滤波器瞬态响应的唯一方法是在感兴趣的信号之前和/或之后收集更多数据(取决于 FIR 滤波器内核的对称性和宽度)。
【讨论】:
以上是关于如何在实时信号的 FIR 带通滤波器中摆脱瞬态响应?的主要内容,如果未能解决你的问题,请参考以下文章
STM32F429的DSP教程第39章 STM32F429的FIR带通滤波器实现(支持逐个数据的实时滤波)
STM32F407的DSP教程第39章 STM32F407的FIR带通滤波器实现(支持逐个数据的实时滤波)
信号处理基于 FIR与IIR滤波器低通高通带通设计matlab源码含GUI
信号处理基于 FIR与IIR滤波器低通高通带通设计matlab源码含GUI