当前位置: 首页 > news >正文

几种特殊的数字滤波器---原理及设计

        我们在数字信号处理课程当中学习了如何利用Z变换分析信号和系统的频率响应,在此希望对这部分知识进行实践,所以可以想到对常用的滤波器进行设计。 


目录

1.设计数字滤波器的一般原则

2.简单一阶滤波器的设计(1st-order System)

(1)由一个零点调节的低通滤波器

(2)由一个极点调节的低通滤波器

(3)一阶低通滤波器的截至频率设计中关于带宽的考虑

3.数字谐振器的设计(Resonator)

(1)常见的二阶数字谐振器

4.数字陷波器的设计(Trap filter)

5.全通滤波器的设计(All-Pass filter)

6.最小相位滤波器的设计(Minimum-Phase filter)

7.工程中常用滤波

(1)限幅滤波法

(2)中值滤波法

(3)滑动平均滤波法

(4)融合型的滤波法

8.信号中趋势项的去除


1.设计数字滤波器的一般原则

1)若使设计的滤波器拒绝某个频率不让该频率信号通过)应在单位圆上相应频率处设置一个零点

(2)若使设计的滤波器突出某个频率(使该频率信号尽量无衰减的通过),应在单位圆内相应的频率处设置一个极点,极点越接近单位圆,在该频率处的幅频响应幅值越大。


2.简单一阶滤波器的设计(1st-order System)

仅由一个零点或者极点调节系统滤波特性;
我们知道在单位圆上:

系统的幅频特性为:

                                                    ---式1


(1)由一个零点调节的低通滤波器

        其中fs/2是折叠频率,系统能够通过的最高频率成分,所以在该位置放置一个零点;可以得到,当频率B点在ω=0处,式1的分子最大,可以通过;当B点在ω=pi处时,分子为0,从而不同;且这种状态是随着ω从0到pi,越到高频越不畅通;从而达到一个低通滤波的效果。

        我们写出我们的系统函数:

        但是我们发现系统是非因果的,所以对其补一个极点,做一个一阶延迟:

        注:圆心处的零极点,不会影响系统的幅频响应

        我们希望最大幅度的地方归一化为1,而位置就在ω=0的地方,且最大幅度为2,所以补上一个1/2。

        最后不难看出,这个就是我们的2点滑动平均滤波器,这就解答了有些时候我们会产生疑惑,均值滤波,按理说滤除的是高幅度的值,为什么也可以滤除我们的高频噪声,和频率有关了?这里我们的推导可以看到,它可以滤去高频(即高频量的幅值衰减到0),也是一个低通滤波器。

        那我们同理可以得出一个简单的高通滤波器:(差分系统可以提取出我们的高频成分)

       


(2)由一个极点调节的低通滤波器

如果,用一个极点来设计一个低通滤波器,我们应该要把极点放在ω=0,并且靠近单位圆的位置,从而当频率即B点靠近低频时,式1的分母很小,靠近高频时,分母很大;

当我们需要在pi的位置,幅度为0,那我们就需要补一个零点在ω=pi的位置上:


(3)一阶低通滤波器的截至频率设计中关于带宽的考虑

        这个时候,我们设计滤波器,希望有一些频段的值通过,有一些不通过,我们就要设计我们的带宽,也就涉及到了我们a的值如何选取的问题。

        我们最大频率降为1/√2也就是0.707这个位置时,对应的ω就是我们的通带截止频率;也就是信号衰减不能够超过3dB;

        通带截止频率与极点位置(a)的关系:


3.数字谐振器的设计(Resonator)

        电路里的谐振:当电路中激励的频率等于电路的固有频率时,电路电磁振荡的振幅也将达到峰值。
        而我们的数字谐振器就是由输入,得到的输出只凸显我们谐振的那个频率也就是我们想要的那个频率;

(1)常见的二阶数字谐振器

第一种形式:

第二种形式:


4.数字陷波器的设计(Trap filter)

        陷波器:一种特殊的带阻滤波器,其阻带在理想情况下只有一个频率点,主要用于消除某个特定频率的于扰

        我们先按照正常想法,设计零点消除干扰:

        其中,假设我们想滤除一个特定频率 ω0。根据数字信号处理理论,一个在单位圆上、设置角度为 ω0 的零点可以完美滤除这个频率分量。这个零点的位置是:z1=e^{jω0},这是一个复数。如果我们只放置这这一个复数零点,  系统函数 H(z) 的一部分就是 (1 - e^{jω0} z^{-1})。将其乘开,得到的系数 h[n]会包含e^{jω0},这显然是一个复数(同时包含实部和虚部)

        这意味着,要实现这个滤波器,你需要进行复数运算,处理复数的输入和输出。

        而这个问题由数学工具可以解决:一个实系数多项式的复根(零点)必须成共轭对出现。也就是说如果 z1 是一个复零点,那么它的共轭 z1* 也必须是这个系统的零点,只有这样,多项式展开后的系数才会全是实数。(因为系数是实数,这个滤波器可以用真实的硬件(如数字信号处理器DSP)或软件程序来实现,处理我们现实中遇到的实信号。)

        如下设计:

        此时我们发现,设计有问题,50Hz确实被滤除了,但0Hz和200Hz我们需要的成分也有一定的滤波效果,这是我们不想要的

        此时我们重新考虑来思考这个问题:

        我们希望整个系统到了需要滤除的频率跟前要滤下去,不过之后要马上跟上来,不能影响到我们其他频率,使其他频率都约等于1;

        只有cr和dr尽力靠近时,频率的幅频响应约等于1;这里我们就要考虑到r的取值,也就是极点的位置的问题了;

当选取r= 0.95时,效果如下图:从而我们的陷波器就设计好了


5.全通滤波器的设计(All-Pass filter)

知识点1:全通滤波器的零极点是共轭倒易的关系

我们继续分析其相位响应:

群延迟是相位响应曲线在某频率点上的斜率的负值 (τ_g) = - (dφ / dω)

知识点2:实系数因果稳定的全通滤波器的重要特性是,相位在【0,pi】内单调减少;群延迟为正


6.最小相位滤波器的设计(Minimum-Phase filter)

        在具有相同幅频响应(即 |H(e^{jω})| 相同)的所有因果稳定滤波器中,最小相位滤波器具有最小的相位延迟(Phase Delay)和最小的群延迟(Group Delay)。也就是说,它在所有频率上引入的相位滞后是最小的

因为Hi(z)为1/H(z),其零点变为了逆系统的极点,所以需要零极点都在单位圆内;

Hdmin(z)是指最小相位 Hap(z)是指全通


7.工程中常用滤波

(1)限幅滤波法


(2)中值滤波法

中值滤波不是一个LSI系统,但是在工程中利用较为广泛

        窗口值合适时,我们的噪声被滤除,并且波形在更加平滑

        但是窗口值过大,我们的波形过于平滑,从而失真


(3)滑动平均滤波法


(4)融合型的滤波法


8.信号中趋势项的去除

我们看到,这里的信号X(n)有一个向上整体偏移的趋势,因为信号中有零漂的现象,若这并不是我们想要的;我们则需要将其去除。

这里我们用到了matlab中的polyfit函数,用于多项式曲线拟合

这里我们选择用一阶曲线拟合,近似得到我们的趋势项,最后输出就是我们输入减去趋势项;从而得到一个比较好的效果。


内容学习自万永菁老师的数字信号处理:

https://www.bilibili.com/video/BV1qTCDYpEFr/p=37&share_source=copy_web&vd_source=bca25a7b41377225e85133a31cb87f8e

http://www.dtcms.com/a/361676.html

相关文章:

  • 【零碎小知识点 】(四) Java多线程编程深入与实践
  • MongoDB主从切换实战:如何让指定从库“精准”升级为主库?保姆级教程!
  • 36. Ansible变量+管理机密
  • 【Android】使用Handler做多个线程之间的通信
  • Java面试宝典:Redis高并发高可用(集群)
  • 函数,数组与正则表达式
  • Kafka 架构原理
  • 销售事业十年规划,并附上一套能帮助销售成长的「软件工具组合」
  • 【git 基础】detached HEAD state的出现和解决
  • C++11模板优化大揭秘:让你的代码更简洁、更安全、更高效
  • javaScript变量命名规则
  • 【汇客项目】:在启动过程中报错 本来安装的是node-sass 被卸载后安装的sass ,代码中一部分出现问题
  • 【深度学习基础】深度学习中的数据增强技术:从理论到实践的解析
  • 【ARMv7】开篇:掌握ARMv7架构Soc开发技能
  • Deepoc具身智能运动控制板:赋能机器感知与决策
  • (MySQL)分布式锁
  • CCNP考试通过后多久有证书,哪里可以查询下载电子证书。
  • 重新理解图神经网络训练:数据、Batch、权重与大图
  • 深入理解零拷贝:本地IO与网络IO的性能优化利器
  • wpf之StackPanel
  • 一、Git与Gitee常见问题解答
  • 2025年数字化转型关键证书分析与选择指南
  • Spark和Spring整合处理离线数据
  • 在idea当中git的基础使用
  • Ansible变量与机密管理总结
  • 人工智能学习:什么是NLP自然语言处理
  • 【自记录】Ubuntu20.04下Python自编译
  • 全栈智算系列直播 | 智算中心对网络的需求与应对策略(上)
  • 基于FPGA的多协议视频传输IP方案
  • 【系统架构师设计(8)】需求分析之 SysML系统建模语言:从软件工程到系统工程的跨越