今天整理工频干扰消除算法。

我们知道,设计数字滤波器,和模拟滤波器的实质,其实就是求一组系数,逼近要求的频率响应。

模拟滤波器已经很成熟,因此,数字滤波器的设计,将S平面映射到Z平面就型。采用双线性变化法映射,可以避免多值映射产生的混叠现象。但这有个问题就,模拟域和数字域两者的角频率是非线性的。

1.平滑滤波器是数字滤波中较早使用的方法,该算法简单,处理速度快,滤波效果较好,但存在明显不足,通带较窄,影响有用信号的分析,有严重削峰,设计方法略。

然后,我们根据IIR和FIR分两大类。FIR滤波器,可以得到严格的线性相位,但它的转移函数的极点固定在原点,只能通过改变零点位置来改变性能。为了达到高的选择性,必须使用高阶。相同设计指标下,FIR滤波器的阶数是IIR滤波器的5~10倍。而IIR滤波器可以根据模拟滤波器的设计公式,数据和表格,计算量小。

首先介绍IIR类,即两种形式的notch滤波器。

2.陷波器  notch 滤波器

陷波器,是IIR数字滤波器,有signal notch 滤波器,即单一频率陷波器,以及comb notch滤波器,即梳妆滤波器。

陷波器是无限冲击响应(IIR)数字滤波器,该滤波器可以用以下常系数线性差分方程表示:

式中: x(n)和y(n)分别为输人和输出信号序列; ai和bi为滤波器系数。

对式(1)两边进行z变换,得到数字滤波器的传递函数为:

式中: zi和pi分别为传递函数的零点和极点。

由传递函数的零点和极点可以大致绘出频率响应图。在零点处,频率响应出现极小值;在极点处,频率响应出现极大值。因此可以根据所需频率响应配置零点和极点,然后反向设计带陷数字滤波器。

2.1 signal notch 滤波器

           考虑一种特殊情况,若零点 在第1象限单位圆上,极点在单位圆内靠近零点的径向上。为了防止滤波器系数出现复数,必须在z平面第4象限对称位置配置相应的共轭零点 、共轭极点 。其极零图如下所示:

这样零点、极点配置的滤波器称为单一频率陷波器,在频率ωo处出现凹陷。而把极点设置在零的的径向上距圆点的距离为l-μ处,陷波器的传递函数为:

式(3)中μ越小,极点越靠近单位圆,则频率响应曲线凹陷越深,凹陷的宽度也越窄。当需要消除窄带干扰而不能对其他频率有衰减时,陷波器是一种去除窄带干扰的理想数字滤波器。

当要对几个频率同时进行带陷滤波时,可以按(2)式把几个单独频率的带陷滤波器(3)式串接在一起。

假设有一个输入,它由50Hz信号和100Hz信号组成。50Hz是一个干扰信号,要设计一个50 Hz的带陷滤波器,采样频率为500Hz。

转移函数:

根据极零关系,取μ = 0.001,则得到z = 0.809 + j * 0.588,z* = 0.809 - j * 0.588,p = 0.8082 + j * 0.5872,p* = 0.8082 - j * 0.5872

代入转移函数,得到分子系数[1, 1.618, 1],分母系数[1,1.6164,0.999]

相应的差分方程:

2.2 comb notch 滤波器

该滤波器实际就是梳妆滤波器,解决了50Hz的K此谐波,可以用matlab直接设计。

其次,介绍FIR滤波器,主要是带阻滤波器。也包括两种:巴特沃斯带阻,多带滤波器。

3 带阻滤波器

3.1多带滤波器

multiband,属于直接型 FIR滤波器,我们可以用Matlab设计出multiband 陷波器。

3.2巴特沃斯带阻滤波器,又称简单整系数带阻滤波器,其原理为一个全通网络,减去一个具有相同延迟和增益的窄带线性相位FIR滤波器,得到一个具有尖锐陷波特性的陷波滤波器。阻带下限截止频率fc1 = 49 Hz,阻带上限截止频率fc2 = 51 Hz,就可以消除50 Hz 的工频干扰。但这种方式,无法滤除50Hz的K此谐波。设计方法如下:

因此,首先设计一个中心频率为50Hz的窄带带通滤波器

为了保证2cosw2值为整系数,则w2只能取pi/3,pi/2,2pi/3,但我们采样率为500Hz,因此,再增加一对共轭极点。位置为w = 2pi * 50 / 500,z = e^j* 4 * pi/5处

简单起见,先取K = 1,为了使分子分母是整系数,则M应是5的奇数倍。

所以最终的频率响应函数为:

式中,e的冥应该是5.不是4.

其中心频率pi/5处,取得最大值(2p + 1),因此全通滤波器系数为2p+1,为使得通带幅值为1,则除以2p+1,最后的滤波器频率特性为:

p的选取,决定阻带宽度,越大,则阻带越窄。取P= 50,则阻带1Hz,考虑到电网的活动,取p= 24,但这使得通带波纹增大,故而,增加K。

总之:平滑滤波器,严重学峰,但速度快,可实时。

单一频率陷波器,相位非线性,不能保证K次谐波滤除。

梳妆滤波器,相位非线性

简单整系数带阻滤波器,不能实现实时,且当干扰频率有漂移时,效果较差。

多带滤波器,线性相位,阶数高。

还有自适应滤波器,但其计算量大,需要学习时间。

因此,实时处理,可以考虑多带滤波器,梳妆滤波器,单一频率陷波器

50Hz工频干扰消除相关推荐

  1. matlab 50hz陷波,新手求消除50HZ工频干扰陷波滤波器源程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %陷波器的设计 %陷波器的传输函数为 % B(1/z) (z-exp(j*2*pi*f0))*(z-exp(-j*2*pi*f0)) %H(z) = -- ...

  2. Matlab滤除50Hz工频干扰

    供参考: https://www.mathworks.com/help/signal/ug/remove-the-60-hz-hum-from-a-signal.html openLoop = dou ...

  3. ECG信号三大主要噪声-基线漂移,工频干扰,肌电干扰

    (1)基线漂移 基线漂移属于**低频干扰**,**呼吸的节奏.四肢动作以及前端处理电路设计**都有可能造成基线漂移,致使原始ECG信号漂移之后的**幅度达到R波最大幅值的0.1-0.2倍**. ECG ...

  4. 为什么会有工频干扰_工频干扰产生原因及解决方案【转载】

    描述 工频干扰使我们在开发设计之中常见的现象,工频干扰为何会产生?如何解决呢?下文给你带来详细介绍. 工频干扰产生原因 示波器的低频输入阻抗是很高的.对于高频信号,由于输入电容的容抗下降,输入阻抗就会 ...

  5. 数字信号滤波——工频干扰

    背景介绍   如何有效地提高传感器的测试精度是行业的发展趋势:近来,对传感器进行实验测试过程中发现结果存在明显的工频干扰,信号中夹杂有明显噪音,具体频率为50hz,因此,近来以解决实际问题为出发点,对 ...

  6. 窄脉冲matlab实现,[求助]如何获得与50Hz工频同步的窄脉冲信号

    回复: [求助]如何获得与50Hz工频同步的窄脉冲信号 global dt df t f N close all N=2^14; %采样点数 L=32; %每码元的采样点数 M=N/L %码元数 Rb ...

  7. 共模干扰以及共模干扰消除方法

    共模干扰是什么?     共模   共模对于我们来说,似乎有些陌生,但它却存在于我们的生活之中,对此我们需要对它进一步地了解,以便更好地利用它为人类创造价值.因此,今天我就为大家讲述共模干扰消除方法的 ...

  8. matlab 工频干扰去除,单片机应用系统中去除工频干扰的快速实现

    引 言 针对工频干扰的特点,本文使用参考文献1所提出的自适应相干模板法.这是一种极其简单.有效的滤除工频干扰的算法,十分有利于单片机快速实现,在采样率不太高的情况下,能达到实时滤波.该算法之所以利于单 ...

  9. matlab均值滤波 工频干扰,为什么会有工频干扰_工频干扰产生原因及解决方案

    描述 工频干扰使我们在开发设计之中常见的现象,工频干扰为何会产生?如何解决呢?下文给你带来详细介绍. 工频干扰产生原因 示波器的低频输入阻抗是很高的.对于高频信号,由于输入电容的容抗下降,输入阻抗就会 ...

最新文章

  1. 如何制作VSPackage的安装程序
  2. Maxscript中渲染中文版Vray完成贴图(VrayCompleteMap)的方法
  3. HTML、HTML5、XML、XHMTL区别
  4. 用FFmpeg搭建基于CNN的视频分析方案
  5. Angular里遇到的一个依赖注入问题以及解决办法
  6. lucene自动补全_使用自动机的Lucene新的邻近查询
  7. Python中类、对象与self详解
  8. Java日期格式化SimpleDateFormat
  9. Exchange2003-2010迁移系列之十三,Exchange邮箱迁移
  10. Apple Pay 支付集成
  11. iOS开发:icon和启动图尺寸(转)
  12. vue中数组按照下标移除其中一个_JDK 中的栈竟然是这样实现的?
  13. 二、NPP/VIIRS夜间灯光数据校正之投影变换、裁剪、重采样
  14. java操作cad_java调用AutoCAD绘图
  15. 荣耀9igoogle模式_创建自己的简单iGoogle小工具
  16. matlab用我爱你绘制立体桃心,用MATLAB画心形图案
  17. 数据分析之大数据分析
  18. 理不懂,你注定就是穷打工的命 【转】
  19. 还没对Docker加以限制?埋下的安全隐患了解一下
  20. qmake -v,出现错误:qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake‘: No such file or direc

热门文章

  1. Mac上搭建Go语言环境及第一个hello.go程序
  2. C++传指针和引用demo
  3. Ubuntu12.04安装nginx并测试
  4. 【android】AIDL传递自定义类型参数
  5. vscode之添加到右键快捷方式
  6. 深度学习自学(八):人脸识别主要场景与算法实现
  7. 如何打开.chm文档(比如华为产品手册等)
  8. Mock生成随机数据常用的类型规则
  9. winform 显示分隔控件_(八十)c#Winform自定义控件-分割线标签-HZHControls
  10. 麒麟810怎么样_麒麟810+6G+128G+大电池,千元价格的手机上手体验