IIR滤波器设计之冲激响应不变法与双线性变换法
前言
IIR(Infinite Impulse Response)数字滤波器是指无限长冲激响应数字滤波器,因其具有良好的幅频响应特性,被广泛应用于通信、控制、生物医学、振动分析、雷达和声呐等领域。
IIR滤波器的设计可以通过设计一个模拟滤波器,进而利用冲激响应不变法或者双线性变换法来进行数字滤波器的设计。
注意:本博文中部分图片来源于慕课视频的截图,课程是北京航空航天大学的数字信号处理。
一、冲激响应不变法
h[n]与h(t)之间的关系可根据采样过程推导,如图1所示:
对式(1)做拉普拉斯变换得:
h[n]的Z变换为:
对比式(2)和式(3)可知,H(s)与H(z)的转换关系为:
w与Ω的转换关系为:
二、双线性变换法
双线性变换即经过了两次线性变换,第一次是将Ω从正无穷大变换到π/T,负无穷大变换到-π/T;第二次是将S域的左半平面映射到Z域的单位圆内。 双线性变换过程如图2所示。
H(s)与H(z)的转换关系为:
w与Ω的转换关系为:
三、MATLAB代码
%% 冲击响应不变法设计巴特沃斯数字低通滤波器
T = 2; % 设置采样周期
fs = 1/T; % 采样频率
Wp = 0.30 * pi/T; % 设置归一化通带和阻带截止频率
Ws = 0.35 * pi/T;
Ap = 20 * log10(1/0.8); % 设置通带最大衰减和阻带最小衰减
As = 20 * log10(1/0.18);% 调用buttord函数确定巴特沃斯滤波器阶数
[N ,Wc] = buttord(Wp,Ws,Ap,As,'s');% 调用butter函数设计巴特沃斯滤波器
[B ,A] = butter(N,Wc,'s');
W = linspace(0,pi,400*pi); % 指定一段频率值
% 计算模拟滤波器的幅频响应
Hs = freqs(B,A,W);
% 调用冲击响应不变法
[Bz,Az] = impinvar(B,A,fs);
% 返回频率响应
Hz = freqz(Bz,Az,W);%% 画图
figure;
subplot(1,2,1);
plot(W/pi,abs(Hs)/abs(Hs(1))); % 绘制巴特沃斯模拟滤波器的幅频特性曲线
xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯模拟滤波器');grid on;
subplot(1,2,2);
plot(W/pi,abs(Hz)/abs(Hz(1))); % 绘制巴特沃斯数字低通滤波器的幅频特性曲线
xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯数字滤波器');grid on;
%% 双线性变换法设计巴特沃斯数字带阻滤波器
T = 2; % 设置采样周期
fs = 1/T; % 采样频率
wp = [0.30*pi,0.75*pi];
ws = [0.35*pi,0.65*pi];
Wp = (2/T)*tan(wp/2); % 设置归一化通带和阻带截止频率
Ws = (2/T)*tan(ws/2);
Ap = 20 * log10(1/0.8); % 设置通带最大衰减和阻带最小衰减
As = 20 * log10(1/0.18);% 调用buttord函数确定巴特沃斯滤波器阶数
[N ,Wc] = buttord(Wp,Ws,Ap,As,'s');% 调用butter函数设计巴特沃斯滤波器
[B ,A] = butter(N,Wc,'stop','s');
W = linspace(0,pi,400*pi); % 指定一段频率值
% 计算模拟滤波器的幅频响应
Hs = freqs(B,A,W);
% 调用双线性变换法
[Bz,Az] = bilinear(B,A,fs);
% 返回频率响应
Hz = freqz(Bz,Az,W);%% 画图
figure;
subplot(1,2,1);
plot(W/pi,abs(Hs)); % 绘制巴特沃斯模拟滤波器的幅频特性曲线
xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯模拟滤波器');grid on;
subplot(1,2,2);
plot(W/pi,abs(Hz)); % 绘制巴特沃斯数字带阻滤波器的幅频特性曲线
xlabel('频率/Hz');ylabel('幅值');title('巴特沃斯数字滤波器');grid on;
总结
冲激响应不变法的优缺点
优点:1)完全模仿模拟滤波器的单位冲激响应,即时域逼近良好;2)线性相位的模拟滤波器通过冲激响应不变法得到的仍为线性相位的数字滤波器。
缺点:频率响应的混叠效应。
双线性变换法的优缺点
优点:避免了频率响应的混叠效应。
缺点:1)不再保持原有的线性相位,呈分段常数型;2)各个分段边缘的临界频率点产生了畸变。
首先,根据待设计数字滤波器的幅频响应,转换为模拟滤波器的幅频响应,然后找到一个连续系统滤波器的频率响应H(jΩ)满足待设计数字滤波器的幅频响应,进而找到满足该幅频响应的连续系统的系统函数H(s),根据推导得到的H(s)与H(z)的转换表达式,得到H(z),即离散系统的系统函数。
IIR滤波器设计之冲激响应不变法与双线性变换法相关推荐
- 冲激响应不变法或双线性变换法中的参数T为什么是一个无关紧要的参数
冲激响应不变法或双线性变换法中的参数T 为什么是一个无关紧要的参数? 作者:jbb0523(彬彬有礼) 一.引言 在数字信号处理课程中,IIR滤波器设计方法一般只讲间接法,即首先根据实际要求设计一个模 ...
- matlab滤波器设计双陷滤波,基于MATLAB 双线性变换法IIR 滤波器的设计
摘要:滤波是信号处理的基础,因此滤波器的设计也就成为数字信号处理的基本问题之一.数字滤波是对数字信号处理不可或缺的环节,其好处远远大于模拟滤波器.本文应用MATLAB,实现了用双线性变换法设计IIR滤 ...
- 数字信号处理6:IIR滤波器设计
IIR滤波器设计 文章目录 IIR滤波器设计 1. 简介 2. 设计步骤简明 3. 拉普拉斯变换和Z变换 3.1 拉普拉斯变换 3.2 Z变换 4. 双线性变换法 4.1 模拟域与数字域的映射 4.2 ...
- matlab iir滤波器设计 实验报告,基于MATLAB的IIR滤波器设计与实现
由于电力系统中非线性电子元件的大量使用,使得谐波污染问题日益严重,当谐波含量超过一定限度时就可能对电网和用户造成极大的危害,且增加线路损耗,降低线路传输能力,干扰通信信号等.因此,应该积极寻找一种治理 ...
- 基于MATLAB的IIR滤波器设计与实现
基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的 ...
- 基于FPGA的IIR滤波器设计
基于FPGA的IIR滤波器设计,使用VHDL语言. 本设计是毕设,包括论文 下面是论文目录截图: 各模块VHDL程序 时序控制模块程序 library ieee; use ieee.std_logic ...
- 【音频处理】IIR滤波器设计(一)Biquad 滤波器
系列文章目录 [音频处理]如何"认识"一个滤波器? [音频处理]IIR滤波器设计(一)Biquad 滤波器 [音频处理]IIR滤波器设计(二)模拟到数字 前言 在开始学习 IIR ...
- scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II )
scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II ) 各种滤波接口 滤波器接口 含义 butt ...
- IIR滤波器设计(调用MATLAB IIR函数来实现)
转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途 对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求甚解,也没用过. ...
最新文章
- go定时器 每天重复_通过测试学习Go:Hello, World
- 多级反馈队列调度算法原理
- orm2 中文文档 6. 查找记录
- 【CV夏季划】告别入门,提升眼界,从掌握最有价值的那些CV方向开始
- 新手入门 | 上链第一步,如何完成XuperChain环境、服务部署
- 转jpg java源程序_将pdf文件转成图片并删除java源代码
- c51随机数不重复_单片机定时器设置不重复随机数
- CubeMX的代码生成设置
- 【Shiro】六、Apache Shiro Session管理
- mysql用一个表更新另一个表的方法
- mysql中having的例子_有关mysql中having子句对组记录进行筛选的例子
- 电脑桌面便签_电脑上哪些便签有提醒功能?求一款好用的电脑桌面提醒便签软件...
- gephi java教程_为Gephi准备数据
- 前端开发——图片标注工具
- xpath批量下载简历模板
- 伍斯特理工学院计算机研究生,伍斯特理工学院计算机工程硕士排名第52(2020年TFE Times排名)...
- 安装docker ce与padman冲突及解决办法
- Gartner:2017年存储技术成熟度曲线
- valid/ready握手协议之ready打拍
- Could not enlist in transaction on entering meta-aware object!”
热门文章
- HTML标签学习基础新人笔记
- 在那之后,我决定做一个出色的打工仔!
- 万豪国际集团公布新任首席执行官和总裁
- php fetch_assoc,PHP使用fetch_assoc()获取查询结果时数据类型都变了
- knife-4j 点击列表出现空白页怎么办?
- “地面哨兵”挑战赛圆满落下帷幕,最终结果揭晓
- hadoop搭建伪分布式集群(centos7+hadoop-3.1.1)
- linux pacman安装目录,Arch包管理器pacman和yaourt简明用法
- Python序列(包括序列类型和常用操作)
- 取模、乘法和除法运算在CPU和GPU上的效率