利用matlab进行IIR数字滤波器设计
2017-05-12 17:19
246 查看
最近处理语音信号用到了数字滤波器,自己稍微做了下总结,上传上来,以备以后不时之需。
下面这两张图片,从滤波器类型选择,具体每步如何进行都记录了个人的一些学习过程,如有不对,欢迎各位大神批评指正。
滤波的基本过程个人总结为以下几步:
1.根据个人需求选择合适的滤波器类型。
2.根据通带阻带频率、通带波纹、阻带衰减等参数确定滤波器的阶数和截止频率;
3.根据阶数与截止频率设计滤波器,得到滤波器传递函数的系数。
4.根据滤波器系数与原始信号进行卷积计算,即对原始信号实现了滤波。
其中,滤波器的阶次也可按照手工的方式计算,计算公式如下图所示:
整个滤波过程是通过下面差分方程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)- a(2)*y(n-1) - … - a(na+1)*y(n-na)
na,nb分别为抽头数目,幂次依次降低。
通带纹波会导致通带内的信号幅值大小有变化,对一些要求高的系统,纹波越小越好。通带纹波和滤波器的阶数有关系,阶数越大纹波越小。
阻带纹波道理应该是一样的,不过好像没有人去关注阻带的纹波,主要关注的阻带参数是阻带衰减。
抽头:可以简单地理解为滤波器系数的个数。比如一个4抽头的滤波器(1, - 5, 20, 20 ),若输入为变量A,B,C,D,则该滤波器的输出为A-5*B+20*C+20*D。这里的系数类似于加权的权值。
首先采用matlab 现有的函数或者工具箱,设计好滤波器,得到滤波器阶数、抽头系数等数据;然后根据小节3中的滤波器公式,对原始信号进行滤波即可。
下面这两张图片,从滤波器类型选择,具体每步如何进行都记录了个人的一些学习过程,如有不对,欢迎各位大神批评指正。
滤波的基本过程个人总结为以下几步:
1.根据个人需求选择合适的滤波器类型。
2.根据通带阻带频率、通带波纹、阻带衰减等参数确定滤波器的阶数和截止频率;
3.根据阶数与截止频率设计滤波器,得到滤波器传递函数的系数。
4.根据滤波器系数与原始信号进行卷积计算,即对原始信号实现了滤波。
1.滤波器的选择:
2.滤波器设计过程:
其中,滤波器的阶次也可按照手工的方式计算,计算公式如下图所示:
3.进行滤波
y=filter(b,a,x);,输入x为滤波前序列,y为滤波结果序列,b/a 提供滤波器系数,b为分子, a为分母整个滤波过程是通过下面差分方程实现的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)- a(2)*y(n-1) - … - a(na+1)*y(n-na)
na,nb分别为抽头数目,幂次依次降低。
4.一些基本的概念
通带纹波:在滤波器的频响中通带的最大幅值和最小幅值的差,正常的滤波器一般通带纹波小于1db,不过也视情况而定。通带纹波会导致通带内的信号幅值大小有变化,对一些要求高的系统,纹波越小越好。通带纹波和滤波器的阶数有关系,阶数越大纹波越小。
阻带纹波道理应该是一样的,不过好像没有人去关注阻带的纹波,主要关注的阻带参数是阻带衰减。
抽头:可以简单地理解为滤波器系数的个数。比如一个4抽头的滤波器(1, - 5, 20, 20 ),若输入为变量A,B,C,D,则该滤波器的输出为A-5*B+20*C+20*D。这里的系数类似于加权的权值。
5.滤波器的C实现
目前c语言实现滤波器最佳的方法是:首先采用matlab 现有的函数或者工具箱,设计好滤波器,得到滤波器阶数、抽头系数等数据;然后根据小节3中的滤波器公式,对原始信号进行滤波即可。
相关文章推荐
- 利用MATLAB的GUI设计的一款可以进行FOCT电流比差计算的仿真平台
- 利用枚举进行状态的设计
- 利用Matlab标定参数在OpenCV中进行立体匹配
- 2、利用反射技术得到泛型类型,实现对实体添删改查操作进行代码重用设计
- fmri的图像数据在matlab中显示,利用imagesc工具进行显示,自带数据集-by 西南大学xulei教授
- 计算机视觉之(一)利用Harris检测子进行角点特征检测(含matlab源码)
- 利用XML进行GUI设计与运行时显示------基于GTK+/Gtkmm的Glade/libglade/libglademm
- 【tool】利用测试概念进行代码设计时的七条基本原则
- 利用matlab进行简单的贝叶斯网络构建
- 利用Matlab设计滤波器(FDAT) .
- 利用matlab和opencv进行摄像头校正
- 利用matlab中的函数进行线性回归分析
- 利用GMM进行无监督face recognition的MATLAB代码及分析
- MATLAB FDATool IIR数字滤波器设计
- android如何利用html进行布局设计入门
- 如何在VSTS中利用Folder对项目和文件进行功能分区,以体现架构设计
- MATLAB中利用摄像头抓图进行编程
- 简单利用Memcached进行缓存层设计
- 利用函数进行模块化设计的一个案例
- 利用Matlab进行地理坐标和直角坐标相互转换