经典滤波器和数字滤波器
 一般滤波器可以分为经典滤波器和数字滤波器。
1、经典滤波器:假定输入信号中的有用成分和希望去除的成分各自占有不同的频带。如果信号和噪声的频谱相互重迭,经典滤波器无能为力。比如 FIR 和 IIR 滤波器等。  
2、现代滤波器:从含有噪声的时间序列中估计出信号的某些特征或信号本身。现代滤波器将信号和噪声都视为随机信号。包括 Wiener Filter、Kalman Filter、线性预测器、自适应滤波器等
Z变换和差分方程
  在连续系统中采用拉普拉斯变换求解微分方程,并直接定义了传递函数,成为研究系统的基本工具。在采样系统中,连续变量变成了离散量,将Laplace变换用于离散量中,就得到了Z变换。和拉氏变换一样,Z变换可用来求解差分方程,定义Z传递函数成为分析研究采样系统的基本工具。
    对于一般常用的信号序列,可以直接查表找出其Z变换。相应地,也可由信号序列的Z变换查出原信号序列,从而使求取信号序列的Z变换较为简便易行。

Z变换有许多重要的性质和定理:

- 线性定理
  设a,a1,a2为任意常数,连续时间函数f(t),f1(t),f2(t)的Z变换分别为F(z),F1(z),F2(z),则有
  

- 滞后定理
  设连续时间函数在t<0时,f(t)=0,且f(t)的Z变换为F(z),则有
  
  应用Z变换求解差分方程的一个例子:已知系统的差分方程表达式为y(n)−0.9y(n−1)=0.05u(n) ,若边界条件y(−1)=1,求系统的完全响应。
  

  • IIR数字滤波器的差分方程和系统函数

    其中ci为零点而di为极点。H(z)的设计就是要确定系数、或者零极点,以使滤波器满足给定的性能指标。
  • IIR数字滤波器结构
     数字滤波器的功能本质上是将一组输入数字序列通过一定的运算后转变为另一组输出数字序列。滤波器系统函数可以表达为多种不同的形式,每一种对应着不同的算法,也就对应着不同的实现结构。例如:
     
    上述同一系统的三种不同描述形式就对应了不同的实现结构,或者说不同的滤波器结构可以实现相同的传递函数。IIR滤波器常见的结构形式有直接Ⅰ型、直接Ⅱ型(典范型)、级联型、并联型。通过差分方程能够画出包含反馈结构的数字网络称为直接型。 

    直接Ⅰ型滤波器的网络结构可以根据差分方程很直观地画出(The Direct-Form I structure implements the feed-forward terms first followed by the feedback terms):

    可以看出直接Ⅰ型滤波器需要N+M个延时单元(N≥M)。直接Ⅱ型结构是对直接Ⅰ型的变型,将上面网络的零点与极点的级联次序互换,并将延时单元合并。实现N阶滤波器只需要N个延时单元(The Direct-Form II structure uses fewer delay blocks than Direct-Form I),故称为典范型。

直接Ⅱ型看上去不那么直观,可以通过下图进行理解。我们可以将整个滤波器系统看成A、B两个子系统串联而成,由于为线性系统因此交换顺序不影响最终输出结果,传递函数可写为:

直接型优点:直接型结构简单,用的延迟器较少(N和M中较大者的个数);缺点:系数ak,bk对滤波器性能的控制关系不直接,因此调整不方便;具体实现滤波器时ak,bk的量化误差将使滤波器的频率响应产生很大的改变,甚至影响系统的稳定性。直接型结构一般用于实现低阶系统。

级联型:将系统传递函数H(z)因式分解为多个二阶子系统,系统函数就可以表示为这些二阶子系统传递函数的乘积。实现时将每个二阶子系统用直接型实现,整个系统函数用二阶环节的级联实现。
  并联型:与级联型类似,用部分分式展开法将系统函数表示为二阶子系统传递函数的和。每个二阶子系统仍然用直接型实现,整个系统函数用二阶环节的并联实现。

用matlab设计滤波器得到参数

在IIR滤波器设计过程中,通常利用模拟滤波器来设计数字滤波器,要先根据滤波器的性能指标设计出相应的模拟滤波器的系统函数H(s),然后由H(s)经变换得到所需要的数字滤波器的系统函数H(z)。常用的变换方法有冲激响应不变法和双线性变换法。下面使用MATLAB等工具直接生成数字滤波器系数:
  在MATLAB命令行中输入fdatool打开滤波器设计工具箱,为了便于分析,我们先从设计一个简单的2阶低通滤波器。Design Method用于选择IIR滤波器还是FIR滤波器,这里我们选择IIR滤波器,类型选择Butterworth,当然也可以选择其他类型,不同类型的频率响应不同,选择后默认的滤波器结构是直接II型。ResponseType用于选择低通、高通、带通、带阻等类型,选择低通滤波“Lowpass”。Frequency Specifications用于设置采样频率以及截止频率,这里填入200以及20,即采样率为200Hz,20Hz以上的频率将被滤除掉。Fiter Order 选择滤波器阶数,为了简单起见,先选择一个2阶滤波器做实验。
  参数设置好后点击Design filter按钮,将按要求设计滤波器。默认生成的IIR滤波器类型是Direct-Form II,Second-Order Sections(直接Ⅱ型,每个Section是一个二阶滤波器),在工具栏上点击Filter Coefficients图标或菜单栏上选择Analysis→Filter Coefficients可以查看生成的滤波器系数。
  
  MATLAB中二阶滤波器差分方程公式如下(注意反馈项符号为负号): 
  
  高阶IIR滤波器的实现是采用二阶滤波器级联的方式来实现的。默认情况下,Filter Coefficients把结果分成多个2阶Section显示,其中还有增益。增益的目的是为了保证计算的精度和系统的稳定性。选择[edit]→[Convert to Single Section],这时候系数变成我们熟悉的形式:
  按照上面的公式,滤波器差分方程为:y[n] =0.997x[n] +1.994x[n-1] + 0.997*x[n-2] - (1.994)*y[n-1] - (0.994)*y[n-2]
  知道了差分方程的形式并通过MATLAB得到滤波器系数后很容易写出相应的代码来实现数字滤波,另外还有一个网站能根据设计指标直接生成C代码:http://www-users.cs.york.ac.uk/~fisher/mkfilter/

#define NZEROS 2
#define NPOLES 2
#define GAIN   1.482463775e+01static float xv[NZEROS+1], yv[NPOLES+1];static void filterloop()
{ for (;;){xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = next input value / GAIN;yv[0] = yv[1]; yv[1] = yv[2]; yv[2] =   (xv[0] + xv[2]) + 2 * xv[1] + ( -0.4128015981 * yv[0]) + (  1.1429805025 * yv[1]);next output value = yv[2];}
}

原来的网址:https://www.cnblogs.com/21207-iHome/p/7059144.html
相关链接:ARM官方DSP库IIR滤波器的实现(STM32)link

FIR滤波器c代码link

IIR滤波器的C++实现link

各种滤波器的设计实现相关推荐

  1. 做微波有源电路的设计仿真 一般都用什么软件 matlab可以吗,MATLAB在有源滤波器仿真设计中的应用...

    MA TLAB 在有源滤波器仿真设计中的应用Ξ王金星 王庆平 贾长朱 杨 刚 陈超英 (天津大学 天津 300072) APPL ICATION OFMATLAB IN DESIGN AND SIM ...

  2. FIR IIR滤波器的设计

    FIR:有限脉冲响应滤波器.有限说明其脉冲响应是有限的.与IIR相比,它具有线性相位.容易设计的优点.这也就说明,IIR滤波器具有相位不线性,不容易设计的缺点.而另一方面,IIR却拥有FIR所不具有的 ...

  3. LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  4. 直流电源EMI滤波器的设计

    直流电源EMI滤波器的设计原则.网络结构.参数选择 1 设计原则-满足最大阻抗失配 插入损耗要尽可能增大,即尽可能增大信号的反射.设电源的输出阻抗和与之端接的滤波器的输人阻抗分别为ZO和ZI,根据信号 ...

  5. 微带滤波器摘要_微带交指滤波器的设计

    1 微带交指滤波器的设计 常树茂 刘水英 (西安机电信息研究所 710065 ) 摘要: 本文介绍了一种微带交指滤波器的简便设计方法.通过简单运算,可得到所需设计参数,再利用电磁 仿真软件进行阻抗匹配 ...

  6. lc滤波器是利用电感的感抗_LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  7. FIR滤波器窗口设计法和频率采样设计法

    一. FIR滤波器窗口设计法 知识点:各种窗函数的特性:窗口设计法基本思路 海宁窗就是正弦窗 一般选用窗函数是正弦波的海宁窗和海明窗 例子:设计一个100Hz的低通滤波器,fs = 500 选择海宁窗 ...

  8. 数字信号处理(FIR滤波器的设计与原理及基础知识)

    FIR滤波器的设计与原理及基础知识 有限长单位脉冲响应(FIR)滤波器的设计方法 线性相位FIR滤波器的特点: 幅度特性: 窗函数设计法 窗口函数对理想特性的影响: 梳状滤波器 有限长单位脉冲响应(F ...

  9. 一种Δ-Σ模数转换器中梳状滤波器的设计

    Δ-Σ模数转换器是一种低速,高精度的过采样模数转换器广泛的应用于信号采集和处理.数字通信.自动检测.自动控制和多媒体技术等领域.作为Δ-Σ模数转换器首级的梳状滤波器的设计就显得非常重要,滤波器的设计直 ...

  10. 基于MATLAB的FIR滤波器的设计及应用(图像去噪)

    基于MATLAB的FIR滤波器的设计及应用(图像去噪) 一.实现功能 1.学会MATLAB的使用,掌握MATLAB的程序设计方法: 2.掌握数字信号处理的基本概念.基本理论和基本方法: 3. 在MAT ...

最新文章

  1. 叫号系统的模拟---采用java synchronized
  2. linux内核7大功能,Linux Kernel5.10十个值得关注的功能
  3. servlet+javabean+service+dao完成注册登录
  4. 怎么返回404_seo如果出现404页面怎么办?如何解决?
  5. Matlab求解规划问题之 fgoalattain函数
  6. java数字时钟控件_Java-数字时钟(简易版)
  7. python uuid
  8. Spark Architecture
  9. 南阳oj-----一种排序(set)
  10. java 解析二进制文件保存为txt文件
  11. Linux 安装SNMPWALK工具
  12. 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
  13. H5C3第二个完整大项目————天猫国际首页跳转登录页
  14. java错误2203win8_Win8.1提示安装Java内部错误2203的解决方法
  15. iOS TouchID/FaceID 开发
  16. WIN10下更改计算机名、中文账户名
  17. Markdown 文本编辑图片居中显示以及题注
  18. MarkDown: 为字体添加颜色
  19. tta 文件格式简述
  20. html5单屏滚动页面案例,20个精巧走心的单页滚动网页设计案例

热门文章

  1. JavaScript_ES5和ES6
  2. 工作不顺心怎么办?——Leo网上答疑(57)
  3. linux 查看mysql
  4. Excel保护工作表了为什么就筛选不了了
  5. 选择企业最合适的人才 —— 谈谈因人设岗与因事设岗
  6. Win 11 + RTX3060 的深度学习环境配置
  7. 路径衰耗和阴影衰落及其相关的模型
  8. Python基本手册
  9. 蓝牙baseband概述
  10. 布斯乘法 Mips实现 - Booth Algorithm