数字信号处理实验(五)——IIR滤波器的设计
一、使用自编函数设计IIR滤波器
1、冲激响应法
(1)注给出的数字滤波器指标先化成模拟指标
(2)设计出模拟滤波器:

(3)使用冲激响应法转化成数字滤波器

(4)一个demo
clear all;
wp=0.2*pi; %数字指标
ws=0.3*pi;
Rp=1;
As=15;
T=1;Fs=1/T;
%冲激响应法
[cs,ds]=afd_butt(wp/T,ws/T,Rp,As);
[b,a]=imp_invr(cs,ds,T);
[C,B,A]=dir2par(b,a)
[db,mag,pha,grd,w]=freqz_m(b,a); figure(1)
subplot(2,2,1),plot(w/pi,mag);title('幅度');grid;axis([0,1,0,1.1]);
subplot(2,2,2),plot(w/pi,db);title('幅度 in db');grid;axis([0,1,-30,5]);
subplot(2,2,3),plot(w/pi,pha/pi);title('相位');grid;axis([0,1,-1,1]);
subplot(2,2,4),plot(w/pi,grd),title('群延时');grid;axis([0,1,0,10]);
2、双线性法设计IIR
(1)预畸变:

(2)设计低通滤波器

(3)转化成数字滤波器

(4)一个demo
%双线性法
OmegaP = (2/T)*tan(wp/2);
OmegaS = (2/T)*tan(ws/2); % Analog Butterworth Prototype Filter Calculation:
[cs,ds] = afd_butt(OmegaP,OmegaS,Rp,As);
% Bilinear transformation:
[b,a] = bilinear(cs,ds,Fs);
[C,B,A] = dir2cas(b,a)
[db,mag,pha,grd,w]=freqz_m(b,a);
二、MATLAB自带函数进行设计
1、模拟低通滤波器转数字滤波器设计
(1)根据数字指标设计出模拟滤波器的阶数n和截止频率Wn

(2)求出低通模拟原型滤波器

(3)由于所得的结果为零极点型,还必须转成b/a型,可用函数zp2tf
[bap,aap]=zp2tf(z,p,k)
(4)将模拟滤波器转换成数字滤波器
(低通,高通,带通,带阻)可用函数lp2lp, lp2hp,lp2bs, lp2bp。

(5)求出滤波器幅频,相频和冲激响应

(6)一个demo
Wp=0.2*pi;Rp=1;Ws=0.3*pi;As=15;
[n,Wn]=buttord(Wp,Ws,Rp,As,'s')
[z,p,k]=buttap(n);
[bap,aap]=zp2tf(z,p,k)
[b,a]=lp2lp(bap,aap,Wn);
[db,mag,pha,w]=freqs_m(b,a,0.5*pi);
[ha,x,t]=impulse(b,a);
figure(1)
subplot(2,2,1),plot(w/pi,mag);title('幅度');
subplot(2,2,2),plot(w/pi,db);title('幅度 in db');
subplot(2,2,3),plot(w/pi,pha/pi);title('相位');
subplot(2,2,4),plot(t,ha),title('冲激响应');
figure(2)
freqs(b,a);
2、直接进行数字滤波器设计
(1)根据给定指标得出,低通模拟原型滤波器的阶数和截止频率:
[n,wn]=buttord(wp,ws,Rp,As)
[n,wn]=cheb1ord(wp,ws,Rp,As)
(2)直接求出数字滤波器,利用函数butter,cheby1,cheby2。
[b,a]=butter(n,wn,’ftype’)
[b,a]=cheby1(n, Rp,wn,’ftype’) ;‘ftype’指的是:’low’,’bandpass’,’high’,’stop’
(3)求出滤波器的幅频,相频及群延时
[db,mag,pha,grd,w]=freqz_m(b,a);(P258)
直接画出幅频特性和相频特性:freqz(b,a) (matlab自带)
(4)一个demo
wp=0.2;Rp=1;ws=0.3;As=15;
[n,wn]=buttord(wp,ws,Rp,As)
[b,a]=butter(n,wn);
[db,mag,pha,grd,w]=freqz_m(b,a);
figure(3)
subplot(2,2,1),plot(w/pi,mag);title('幅度');grid; subplot(2,2,2),plot(w/pi,db);title('幅度 in db');grid; subplot(2,2,3),plot(w/pi,pha/pi);title('相位');grid;
subplot(2,2,4),plot(w/pi,grd),title('群延时');grid;
figure(4);freqz(b,a)
PS:
matlab中数字角频率进行了归一化,即0-1表示0-pi
频率以Hz给出,均表示模拟频率,因此利用matlab直接设计滤波器时,先要化成数字频率。
例:wp=[100 200]*2/fs
数字信号处理实验(五)——IIR滤波器的设计的更多相关文章
- 2018-2019-1-20165221&20165225 《信息安全系统设计》实验五:通讯协议设计
2018-2019-1-20165221&20165225 <信息安全系统设计>-实验五:通讯协议设计 OpenSSL学习: 简介: OpenSSL是为网络通信提供安全及数据完整性 ...
- 数字信号处理实验(四)——数字滤波器结构
一.滤波器结构 1.IIR滤波器 (1)系统函数 (2)差分方程 (3)级联形式: (4)并联形式 2.FIR滤波器 (1)系统函数 (2)差分方程 (3)级联形式: (4 ...
- 数字信号处理实验(六)——FIR滤波器的设计
一.四种线性相位FIR滤波器的振幅响应 1.自编函数 [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) [Hr,w,a,L]=-n) 2.一个demo clea ...
- 数字信号处理实验(一)——DTFT
1.MATLAB自编绘图函数 function [] = signal_write(X,w,flag) % X:数据 % w:频率向量 magX=abs(X);angX=angle(X); realX ...
- 数字信号处理实验(零)—— 一维声音信号处理和二维图像处理
一.在matlab下声音信号的I/O 1.读wav文件函数 •y = wavread('filename') •[y,Fs,bits] = wavread('filename') •[...] = w ...
- IIR滤波器和FIR滤波器的区别与联系zz
-------------------------------------------------------------------------------------------------- ...
- 《数字信号处理》课程实验2 – FIR数字滤波器设计
一.FIR数字滤波器设计原理 本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...
- 手把手教系列之IIR滤波器设计
[导读]:在嵌入式系统中经常需要采集模拟信号,采集模拟信号的信号链中难免引入干扰,那么如何滤除干扰呢?今天就来个一步一步描述如何设计部署一个IIR滤波器到你的系统. 何为IIR滤波器? 无限冲激响应( ...
- IIR滤波器设计(调用MATLAB IIR函数来实现)
转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途 对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求 ...
随机推荐
- 解析sql语句中left_join、inner_join中的on与where的区别
以下是对在sql语句中left_join.inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type):id type ---- ...
- linux skill
linux console终端乱码解决 1.console终端乱码 在/etc/profile文件的最后一行添加如下内容: export LC_ALL="zh_CN.GB18030" ...
- zpf 获取表单等数据的用法
2015年4月12日 12:25:35 星期日 zpf框架中获取表单数据的方法 //获得get,post,url中的数据 private function setData() { $this-> ...
- UIWebView内嵌网页 Xcode7.0以后的用法
UIWebView* webPage=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight-64)]; ...
- sql server 导出表结构
今天准备整理下手里面几个数据库,形成一个表结构文档,方便以后维护使用. 网上找到一个脚本还不错,小小的修改就满足了我的要求,执行完SQL脚本. 在结果就能看到数据库所有表的结构,这个时候只要全选,然后 ...
- Android Volley入门到精通:定制自己的Request
经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest.JsonRequest.ImageRequest等.其中StringRequest用于请 ...
- 使用WKWebView替换UIWebView
开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载.这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难.如果加载网页多,还可能因为过量占 ...
- ASINetworkQueues(经典2)
ASINetworkQueues, 它的delegate提供更为丰富的功能 提 供的更多的回调方法如下: a,requestDidStartSelector,请求发起时会调此方法,你可以在此方法中跟据 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十) 之 自定义系统消息和总结
前言 本篇主要讲解一个东西,就是我们自定义系统消息.效果如下: 首先我们要做的准备工作就是改写 layim 的消息模板,如果不改的话就成为某个用户发送的消息了,那么体验就稍微差一些.找到模板我们看一下 ...
- Mysql之日志恢复
对于Mysql,每一步操作都会有相应记录,如insert,update,delete ,drop ,alter等相关DDL或DML操作.有时难免会出错,但在出错时如何恢复以复原数据. 例如,现在有这些 ...