数字滤波器


前言

本文主要介绍了利用filter solutions 软件设计我们所需的数字滤波器。


一、带通滤波实例

1.理论设计

结合我之前发过的一篇文章链接: link,里面提到了我有一个期望采得的声音信号是1kHz的,但是我用adc采样的时候可能会采到各种频率的信号,包括外部的白噪声,人声……等等。那我们想要采到一个干净的1kHz信号的话就需要对采得的数据进行滤波。
在此我们选择的是带通滤波,中心频率为1kHz,下转折频率为800Hz,上转折频率为1200Hz。采样频率10kHZ,有了这些基础的参数,我们就可以利用filter solutions进行设计。如下图所示:
在这里插入图片描述
设置完我们所需的参数后,点击右侧的synthesize filter即可生成滤波器的传递函数:
在这里插入图片描述
下面进行公式的推导:
在这里插入图片描述
在这里插入图片描述

2.代码实现

下面所附为我本人写的代码,对照上述推出的结论,更好理解一些。

// An highlighted block
/*三阶巴特沃兹带通滤波器*/
void BTWZ_Filter(float *new_data)
{
	static double input_k; 			// k 次的数据
	static double input_k_1; 		//k-1次的数据
	static double input_k_2; 		//k-2次的数据
	static double input_k_3; 		//k-3次的数据
	static double input_k_4; 		//k-4次的数据
	static double input_k_5; 		//k-5次的数据
	static double input_k_6; 		//k-6次的数据
	
	static double output_k; 		// k 次的数据
	static double output_k_1; 		//k-1次的数据
	static double output_k_2; 		//k-2次的数据
	static double output_k_3; 		//k-3次的数据
	static double output_k_4; 		//k-4次的数据
	static double output_k_5; 		//k-5次的数据
	static double output_k_6; 		//k-6次的数据
	
	input_k = *new_data;
	output_k = 4.4838239*output_k_1 - 9.222935*output_k_2 + 10.896321*output_k_3 - 7.7949215*output_k_4 
							+ 3.2027361*output_k_5 - 0.6041097*output_k_6 + 1.5670104e-3*input_k - 4.7010311e-3*input_k_2 
							+ 4.7010311e-3*input_k_4 - 1.5670104e-3*input_k_6;
	*new_data = output_k;
	
	//迭代
	input_k_6 = input_k_5;
	input_k_5 = input_k_4;
	input_k_4 = input_k_3;
	input_k_3 = input_k_2;
	input_k_2 = input_k_1;
	input_k_1 = input_k;
	
	output_k_6 = output_k_5;
	output_k_5 = output_k_4;
	output_k_4 = output_k_3;
	output_k_3 = output_k_2;
	output_k_2 = output_k_1;
	output_k_1 = output_k;	
}

filter solutions也提供的官方的代码,在上述传递函数的界面中,左上角有一个code按键,点击即可生成标准c代码。
经我的测试,该传递函数生成的滤波器还是非常理想的,基本上在带通频率外的数据会很快的衰减到0,而带通频率内的数据在70次迭代后就会趋于稳定。

二、不同滤波器的特点

以下均收集于网络资料。

1.Gaussian

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。

2.Bessel

贝赛尔滤波器是具有最大平坦的群延迟(线性相位响应)的线性过滤器。带通(通常为用户关注区域)的相位响应近乎呈线性。 Bessel滤波器可用于减少所有IIR滤波器固有的非线性相位失真。但它的选择性比同阶(或极数)的巴特沃斯(Butterworth)滤波器或切比雪夫(Chebyshev)滤波器要差。

3.Butterwroth

巴特沃斯滤波器也被称作最大平坦滤波器。巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有纹波,而在阻频带则逐渐下降为零。

4.Chebyshev

切比雪夫滤波器是在通带或阻带上频率响应幅度等波纹波动的滤波器。切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应的幅频特性不如后者平坦。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小,但是在通频带内存在幅度波动。
在这里插入图片描述
在这里插入图片描述
一型切比雪夫滤波器:
在通带(或称“通频带”)上频率响应幅度等波纹波动的滤波器称为“I型切比雪夫滤波器”。
在这里插入图片描述
二型切比雪夫滤波器:
在阻带(或称“阻频带”)上频率响应幅度等波纹波动的滤波器称为“II型切比雪夫滤波器”。
在这里插入图片描述

5.Legendre

勒让德滤波器在通带内的波动优于切比雪夫I型滤波器。

6.Elliptic

椭圆滤波器是在通带和阻带等波纹的一种滤波器。椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波动。它在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。从传递函数来看,巴特沃斯和切比雪夫滤波器的传递函数都是一个常数除以一个多项式, 为全极点网络, 仅在无限大阻带处衰减为无限大. 而椭圆函数滤波器在有限频率上既有零点又有极点。极零点在通带内产生等波纹, 阻带内的有限传输零点减少了过渡区, 可获得极为陡峭的衰减曲线。也就是说在阶数相同的条件下,椭圆滤波器相比于其他类型的滤波器,能获得更窄的过渡带宽和较小的阻带波动, 就这点而言, 椭圆滤波器是最优的。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第l章 数字信号处理引言 1.1 引言 1.2 数字信号处理起源 1.3 信号域 1.4 信号分类 1.5 DSP:一个学科 第2章 采样原理 2.1 引言 2.2 香农采样原理 2.3 信号重构 2.4 香农插值 2.5 采样方法 2.6 多通道采样 2.7 MATLAB音频选项 第3章 混叠 3.1 引言 3.2 混叠 3.3 圆判据 3.4 IF采样 第4章 数据转换和量化 4.1 域的转换 4.2 ADC分类 4.3 ADC增强技术 4.4 DSP数据表示方法 4.5 量化误差 4.6 MAC单元 4.7 MATLAB支持工具 第5章 z变换 5.1 引言 5.2 z变换 5.3 原始信号 5.4 线性系统的z变换 5.5 z变换特性 5.6 MATLAB z变换设计工具 5.7 系统稳定性 5.8 逆z变换 5.9 赫维赛德展开法 5.10 逆z变换MATLAB设计工具 第6章 有限冲激响应滤波器 6.1 引言 6.2 FIR滤波器 6.3 理想低通FIR滤波器 6.4 FIR滤波器设计 6.5 稳定性 6.6 线性相位 6.7 群延迟 6.8 FIR滤波器零点位置 6.9 零相位FIR滤波器 6.10 最小相位滤波器 第7章 窗函数设计法 7.1 有限冲激响应综述 7.2 基于窗函数的FIR滤波器设计 7.3 确定性设计 7.4 数据窗 7.5 基于MATLAB窗函数的FIR滤波器设计 7.6 Kaiser窗函数 7.7 截尾型傅里叶变换设计方法 7.8 频率采样设计法 第8章 最小均方设计方法 8.1 有限冲激响应综述 8.2 最小二乘法 8.3 最小二乘FIR滤波器设计 8.4 MATIAB最小均方设计 8.5 MATLAB设计对比 8.6 PRONY方法 第9章 等波纹设计方法 9.1 等波纹准则 9.2 雷米兹交换算法 9.3 加权等波纹FIR滤波器设计 9.4 希尔伯特等波纹FIR滤波器 9.5 等波纹滤波器阶次估计 9.6 MATLAB等波纹FIR滤波器实现 9.7 LpFIR滤波器设计 9.8 基于Lp范数的MATLAB滤波器设计 第10章 FIR滤波器特例 10.1 引言 10.2 滑动平均FIR滤波器 10.3 梳状FIR滤波器 10.4 L波段FIR滤波器 10.5 镜像FIR滤波器 10.6 补码FIR滤波器 10.7 频率抽样滤波器组 10.8 卷积平滑FIR滤波器 10.9 非线性相位FIR滤波器 10.10 Farrow FIR滤波器 第11章 FIR的实现 11.1 概述 11.2 直接型FIR滤波器 11.3 转置结构 11.4 对称FIR滤波器结构 11.5 格型FIR滤波器结构 11.6 分布式算法 11.7 正则符号数 11.8 简化加法器图 11.9 FIR有限字长效应 11.10 计算误差 11.11 缩放 11.12 多重MAC结构 第12章 经典滤波器设计 12.1 引言 12.2 经典模拟滤波器 12.3 模拟原型滤波器 12.4 巴特沃斯原型滤波器 12.5 切比雪夫原型滤波器 12.6 椭圆原型滤波器 12.7 原型滤波器到最终形式的转换 12.8 其他IIR滤波器形式 12.9 PRONY(PADE)法 12.10 尤尔—沃尔 第13章 无限冲激响应滤波器设计 13.1 引言 13.2 冲激响应不变法 13.3 冲激响应不变滤波器设计 13.4 双线性z变换法 13.5 翘曲 13.6 MATLAB IIR滤波器设计 13.7 冲激响应不变与双线性z变换IIR对比 13.8 最优化 第14章 状态变量滤波器模型 14.1 状态空间系统 14.2 状态变量 14.3 模拟仿真 14.4 MATLAB仿真 14.5 状态变量模型 14.6 基变换 14.7 MATLAB状态空间 14.8 转置系统 14.9 MATLAB状态空间算法结构 第15章 数字滤波器结构 15.1 滤波器结构 15.2 直Ⅰ、Ⅱ型结构 15.3 直Ⅰ、Ⅱ型IIR滤波器的MATLAB相关函数 15.4 直Ⅰ、Ⅱ型结构的MATLAB实现 15.5 级联型结构 15.6 一阶、二阶子滤波器 15.7 一阶、二阶子滤波器的MATLAB实现 15.8 并联型结构 15.9 级联/并联型结构的MATLAB实现 15.10 梯型/格型IIR滤波器 第16章 定点效应 16.1 背景 16.2 定点系统 16.3 溢出(饱和)效应 16.4 算法误差 16.5 系数敏感度 16.6 二阶子滤波器 16.7 标准IIR滤波器 16.8 缩放 16.9 极限环振荡 第17章 IIR结构分析 17.1 溢出防范 17.2 Lp范数界 17.3 L2溢出预防 17.4 L2范数测定 17.5 L2范数的附加说明 17.6 L∞范数界 17.7 L1范数界 17.8 噪声功率增益 17.9 基于状态空间的噪声分析 17.10 相似变换 第18章 多采样率系统简介 18.1 背景 18.2 抽取 18.3 插值 18.4 采样率转换 18.5 多相表示法 18.6 子带滤波器 18.7 MATLAB 第19章 多采样率滤波器 19.1 引言 19.2 离散傅里叶变换(DFI)滤波器组 19.3 L波段滤波器 19.4 正交镜像滤波器 19.5 多相表达式 19.6 掩频滤波器 19.7 级联积分梳状滤波器(CIC) 附录一 MATLAB 附录二 词汇表 附录三 中英文对照 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值