7 数字滤波器的结构
来源:互联网 发布:淘宝模特奶奶 编辑:程序博客网 时间:2024/06/05 18:42
有人可能会很纠结,滤波不就是输入信号和一组抽头系数做卷积么,滤波器的结构是来干什么的?
总体上说,是为了减少抽头系数和时延器。比如,由于某些特殊要求,可以使得滤波器的抽头的系数可以有某种对称性质,(比如线性相位的FIR滤波器的系数就是这样),为了节省乘法单元,就可以使用一些特殊的结构来巧妙地实现原来较多的运算。再比如,对于IIR滤波器,可以让输入信号的时延与反馈信号的时延公用时延器。
先说FIR,FIR的最大特点在于它可以做成线性相位的。当你需要使用信号的相位信息时,这就很关键了。FIR线性相位滤波器,可以按照,初相(=0或=π),阶数(奇数或者偶数)组合成4类。最终的结果是,当滤波器为奇数(或者偶数)阶,冲击响应关于N/2奇对称(或者偶对称)。通过观察它们的频率特性,可以看到它们的频率响应会在某些部分为0,因此当滤波器如果在这个频段上为通带时,就不能选择响应的结构。
对于FIR滤波器,还有一种特殊的结构,称为频率采样结构。它的特点是由连续的频谱推出采样点上的频率结构,然后反变换出时域系数,最后利用时域系数,求Z变换获取频率采样结构。最终是由N个1阶IIR并联而成,这个结构的最大问题在于,由于量化误差,有可能导致滤波器不稳定。
说完了FIR,再来说IIR。由频率采样结构可以看出,IIR滤波器有可能不稳定。不仅如此,IIR滤波器还会面临不能作出线性相位的问题,这限制了它的应用,但是IIR的好处在于,对于同样的幅度特性,它的阶数要比FIR少很多,所以如果不需要考虑相位时,IIR也是不错的选择。IIR的主要类型有直接(I,II,转置),并联、级联以及格型这么几种。其中直接型就是按照系统函数实现的,只不过在公用延迟单元上略有区别。级联是将系统函数写成连乘的形式,依次实现每个小的系统函数,并联是将系统函数写成部分分式展开的形式,依次实现各个小的系统函数。格型滤波器则是完全由最优滤波器的准则推导出来的结构,跟前3个不是1种门路。
不论是FIR还是IIR不同的滤波器对于有限字长效应的敏感度是不同的,这里先不讨论这个问题,先讨论不同结构之间的转化。先看代码:
clear all;close all;clc;% 直接结构b = 5*[1 -2.4412 2.4412 -1];a = [1 -1.7728 1.4464 -0.405];% 级联结构[sos,g] = tf2sos(b,a);% 并联结构[r1,p1,k1] = residue(b,a);R1 = [r1(1),r1(2)];P1 = [p1(1),p1(2)];[b1,a1] = residue(R1,P1,0);% 格型结构系数[v,k] = tf2latc(b,a);
由于FIR与IIR的区别在于分子部分(a)是否为1,所以matlab并没有为这俩种滤波器分别设计相关的函数。下面对于其中原理进行解释:、
1.直接-》级联的时候,sos是二阶子系统矩阵它是一个n*6的矩阵,其中每1行代表了1个二阶子系统的b0,b1,b2,a0(恒等于1),a1,a2的系数。至于为什么要搞2阶子系统,是因为很多时候,写成连乘以后,滤波器的系数就成了复数,这无疑增大了运算量,所以,通过将复系数合并为2阶的实系数,可以避免这个麻烦。
2.直接-》并联时,residue实际上是求部分分式展开的。但是如果反过来用,就是将站来的部分分式合并为多项式相除的样子。通过[r1,p1,k1] = residue(b,a);,发现r1,r2,p1,p2都是复数,所以将它们合并成1个二阶子系统。
3.对于格型结构,没啥花样,但是要注意的是a的系数必须用a(1)归一化。
至于有限字长效应对于不同滤波器结构的影响,下次再讨论吧。
- 7 数字滤波器的结构
- 6.2 FIR数字滤波器的基本结构
- 【MOOC】数字信号处理-电子科技大学-第十周 数字滤波器的结构
- 计算数字滤波器的频率响应
- [matlab]归一化的数字滤波器
- 数字滤波器的时域理解
- IIR数字滤波器的设计
- 数字滤波器
- 数字滤波器
- 六、数字滤波器的实现——6.1 IIR的基本结构
- DSP的数字滤波器的实现
- 请教关于数字滤波器的问题
- 几种常用的数字滤波器
- 实验三:数字滤波器的设计
- 数字滤波器的幅频响应
- FIR数字滤波器的设计(三)
- 计算数字滤波器的频率响应 (2)
- 模拟滤波器到数字滤波器的转化
- MinGW编译db-db-4.8.30.NC.tar.gz遇到unexpected EOF while looking for matching‘''
- 如何启用WebGL
- Android 向服务器发送get请求乱码问题
- ios设计模式--MVC模式,单例模式
- MyEclipse的git离线安装即link安装
- 7 数字滤波器的结构
- 重新建立博客的一段话
- 我回来了
- File.separator & File.pathSeparator的区别
- oracle 高水位线 high water mark
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- 编辑文章 - 博客频道 - CSDN.NET
- 我的android(第二十二天)
- ++i和i++的区别