第4章 MATLAB在信号处理中的应用 4.1 信号及其表示 4.2 信号的基本运算 4.3 信号的能量和功率 4.4 线性时不变系统

Slides:



Advertisements
Similar presentations
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
Advertisements

© Mingyan Jiang, SDU, Copyrights Reserved
PowerPoint 电子科技大学 无源RC滤波器的频率响应特性的研究.
1.2 信号的描述和分类.
基于IIR数字滤波器的语音信号处理 吕书畅 江卫靖 谢思宸 郑梧俊.
第四章 数字滤波器基础 本章要点 数字滤波器 Z变换 数字滤波器的组成 数字滤波器的类型 差分方程的传递函数 Z平面的零-极点分布图
第2章 时域离散信号和系统的频域分析 教学内容包括: 序列的傅立叶变换定义及性质 Z变换的定义与收敛域 利用z变换分析信号和系统的频域特性.
第一章 绪论.
第3章线性时不变(LTI)连续系统的时域分析
内容提要 数字滤波器基本原理 IIR 数字滤波器 FIR 数字滤波器 数字滤波器的实现问题 数字滤波器的结构及有限字长效应
第七章  FIR数字滤波器设计 滤波器的设计师依据某种准则设计出一个频率特性去逼近于指标要求的滤波器系统函数 或频率响应 。 FIR滤波器的设计就在于寻找一个频率响应函数 去逼近所需要的指标,逼近方法主要有四种: 傅里叶级数展开 窗函数法 (时域逼近)
6.6 常用模拟低通滤波器特性 首先将要设计的数字滤波器的指标,转变成模拟低通原型滤波器的指标后,设计“模拟低通原型”滤波器。 模拟滤波器
数字信号处理 (Digital Signal Processing)
第7章 离散信号的频域分析 离散Fourier级数 离散Fourier变换 第3章 连续信号的频域分析 连续Fourier级数
第三章 无限长单位脉冲响应(IIR)滤波器设计
1.4 离散时间系统与差分方程 y(n)= T[x(n)]
Signals and Systems Lecture 28
信号与系统基础 (二) 王烁
第2章 Z变换 Z变换的定义与收敛域 Z反变换 系统的稳定性和H(z) 系统函数.
数字信号处理 Lecture 3: Representation of Systems 杨再跃
INFINITE IMPULSE RESPONSE FILTER
第6章 有限脉冲响应数字滤波器的设计 IIR的设计 Specifications Desired IIR 脉冲响应不变法 阶跃响应不变法
Matlab 中IIR数字滤波器设计相关函数
第四章 补充 连续系统常用的数学模型及其转换 1.微分方程及传递函数的多项式模型
第 三章 无限长单位脉冲响应(IIR)滤波器 的设计方法(共10学时 )
第8章 MATLAB程序设计语言 在信号处理中的应用 8.1 概述 8.2 基本数值运算 8.3 基本语句 8.4 MATLAB函数
现代电子技术实验 4.11 RC带通滤波器的设计与测试.
走进编程 程序的顺序结构(二).
熟悉傅里叶变换的性质 熟悉常见信号的傅里叶变换 了解傅里叶变换的MATLAB实现方法. 熟悉傅里叶变换的性质 熟悉常见信号的傅里叶变换 了解傅里叶变换的MATLAB实现方法.
实验四 滤波器传输函数的零点和极点 对滤波特性的影响
实验三 数字滤波器设计 ( Filter Design)
Biomedical Signal processing matlab 信号处理函数
Chapter 3 Discrete Fourier-Transform (Part Ⅰ)
第六章学习目标 理解数字滤波器的基本概念 掌握Butterworth、Chebyshev低通滤波器的特点 掌握脉冲响应不变法
第8章 数字滤波系统的网络结构与分析 课程名称:数字信号处理 任课教师:张培珍 授课班级:信计
实验六 积分器、微分器.
第五章 频率特性法 在工程实际中,人们常运用频率特性法来分析和设计控制系统的性能。
数字信号处理 Lecture 4: Analysis of Discrete-time System 杨再跃
归纳:频谱分析和滤波器设计 一。MATLAB表述的信号和系统.
Digtlal Signal Processing —— Using MATLAB
第1章 时域离散信号和时域离散系统 1.1 引言 1.2 时域离散信号 1.3 时域离散系统
实验一: 信号、 系统及系统响应 1、实验目的 1 熟悉连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。
第10章 信号处理的图形 用户界面工具 1-1.
2.1.
第四章习题.
数字信号处理基础 第7章 FIR数字滤波器的理论和设计
晶体管及其小信号放大 -单管共射电路的频率特性.
实验三 FIR数字滤波器设计.
§2.4 零输入响应和零状态响应 零输入响应 零状态响应 对系统线性的进一步认识.
晶体管及其小信号放大 -单管共射电路的频率特性.
熟悉傅里叶变换的性质 熟悉常见信号的傅里叶变换 了解傅里叶变换的MATLAB实现方法. 熟悉傅里叶变换的性质 熟悉常见信号的傅里叶变换 了解傅里叶变换的MATLAB实现方法.
第四章 有限长单位脉冲响应( FIR )滤波器的设计方法
第四章 数字滤波器的基本结构(3).
第一章 离散时间信号与系统.
第4章 Excel电子表格制作软件 4.4 函数(一).
2019/5/2 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 08:20:28.
实验一 熟悉MATLAB环境 常用离散时间信号的仿真.
2019/5/4 实验三 离散傅立叶变换的性质及应用 06:11:49.
2019/5/11 实验四 FIR滤波器的特性及应用 05:31:12.
2019/5/11 实验三 线性相位FIR滤波器的特性 05:31:30.
第7讲 有源滤波器 基本概念与定义 一阶有源滤波器 二阶有源滤波器.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
建模常见问题MATLAB求解  .
2019/5/21 实验三 离散傅立叶变换的性质及应用 19:21:59.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
§7.3 离散时间系统的数学 模型—差分方程 线性时不变离散系统 由微分方程导出差分方程 由系统框图写差分方程 差分方程的特点.
第七章 FIR数字滤波器的设计方法 IIR数字滤波器: FIR数字滤波器: 可以利用模拟滤波器设计 但相位非线性
信号发生电路 -非正弦波发生电路.
第6章 IIR数字滤波器的设计 全通系统 最小相位系统 模拟低通滤波器设计 脉冲响应不变法 双线性变换法 模拟域频率变换.
§4-3 集成运放的线形应用 学习要点: 低、高通滤波器电路结构及伏-频曲线 低、高、带通滤波器参数计算.
Presentation transcript:

第4章 MATLAB在信号处理中的应用 4.1 信号及其表示 4.2 信号的基本运算 4.3 信号的能量和功率 4.4 线性时不变系统 4.1 信号及其表示 4.2 信号的基本运算 4.3 信号的能量和功率 4.4 线性时不变系统 4.5 线性时不变系统的响应 4.6 线性时不变系统的频率响应 4.7 傅里叶(Fourier)变换 4.8 IIR数字滤波器的设计方法 4.9 FIR数字滤波器设计

4.1 信号及其表示 4.1.1连续时间信号的表示 连续时间信号:时间变化连续。如y=x(t) 4.1.2工具箱中的信号产生函数 4.1 信号及其表示 4.1.1连续时间信号的表示 连续时间信号:时间变化连续。如y=x(t) 离散时间信号(序列):时间离散,如x(nT)=x(t)|t=nT. 4.1.2工具箱中的信号产生函数 函数名 功能 sawtooth 产生锯齿波或三角波信号 pulstran 产生冲激串 square 产生方波信号 rectpule 产生非周期的方波信号 sinc 产生sinc函数波形 tripuls 产生非周期的三角波信号 chirp 产生调频余弦信号 diric 产生Dirichlet或周期sinc函数 gauspuls 产生高斯正弦脉冲信号 gmonopuls 产生高斯单脉冲信号 vco 电压控制振荡器

4.1.3离散时间信号的表示 在MATLAB中,离散时间信号x(n)的表示:需用一个向量x表示序列幅值,用另一个等长的定位时间变量n,才能完整地表示一个序列。 [例4-10] 绘制离散时间信号的棒状图。其中x(-1)=-1, x(0)=1, x(1)=2, x(2)=1, x(3)=0, x(4)=-1。MATLAB源程序为: n=-3:5; %定位时间变量 x=[0,0,-1,1,2,1,-1,0,0]; stem(n,x); grid; % 绘制棒状图 line([-3,5],[0,0]); %画x轴线 xlabel('n'); ylabel('x[n]') 运行结果如图4.11所示。 图 4.11 离散时间信号图形

4.1.4几种常用离散时间信号的表示 1.单位脉冲序列 直接实现:x=zeros(1,N); x(1,n0)=1; 2.单位阶跃序列 直接实现:n=[ns:nf]; x=[(n-n0)>=0];

3.实指数序列 直接实现:n=[ns:nf]; x=a.^n; 4.复指数序列 直接实现:n=[ns:nf]; x=exp((sigema+jw)*n); 5.正(余)弦序列 直接实现:n=[ns:nf]; x=cos(w*n+sita);

4.2 信号的基本运算 4.2.1信号的相加与相乘 4.2.2序列移位与周期延拓运算 4.2.3 序列翻褶与序列累加运算 y(n)=x1(n)+x2(n) y(n)=x1(n)×x2(n) MATLAB实现:y=x1+x2; y=x1.*x2 4.2.2序列移位与周期延拓运算 序列移位:y(n)=x(n-m)。MATLAB实现:y=x; ny=nx-m 序列周期延拓:y(n)=x((n))M,MATLAB实现:ny=nxs:nxf;y=x(mod(ny,M)+1) 4.2.3 序列翻褶与序列累加运算 序列翻褶:y(n)=x(-n)。MATLAB可实现: y=fliplr(x) 序列累加的数学描述为: MATLAB实现:y=cumsum(x)

4.2.4 两序列的卷积运算 4.2.5 两序列的相关运算 两序列卷积运算: MATLAB实现:y=conv(x1,x2)。序列x1(n)和x2(n)必须长度有限。 4.2.5 两序列的相关运算 两序列相关运算: 。MATLAB实现:y=xcorr(x1,x2)。

4.3 信号的能量和功率 1.信号能量 2. 信号功率 数字定义: MATLAB实现: E=sum(x.*conj(x)); 或 E=sum(abs(x).^2); 2. 信号功率 数字定义: MATLAB实现: P=sum(x.*conj(x))/N; 或 E=sum(abs(x).^2)/N;

4.4 线性时不变系统 4.4.1 系统的描述 1.常系数线性微分/差分方程 2.系统传递函数 连续系统: 离散系统: 3.零-极点增益模型 4.4 线性时不变系统 4.4.1 系统的描述 1.常系数线性微分/差分方程 2.系统传递函数 连续系统: 离散系统: 3.零-极点增益模型 连续系统: 离散系统:

4.极点留数模型 连续系统: 离散系统: 5.二次分式模型 连续系统: 离散系统: 6.状态空间模型 连续系统: 离散系统:

4.4.2 系统模型的转换函数 在MATLAB中,用sos、ss、tf、zp分别表示二次分式模型、状态空间模型、传递函数模型和零-极点增益模型。其中sos表示二次分式,g为比例系数,sos为L×6的矩阵,即 (4-15) 1.ss2tf函数 格式:[num, den]=ss2tf(A,B,C,D,iu) 功能:将指定输入量iu的线性系统(A,B,C,D)转换为传递函数模型[num,den]。 2.zp2tf函数 格式:[num,den]=zp2tf(z,p,k) 功能:将给定系统的零-极点增益模型转换为传递函数模型,z、p、k分别为零点列向量、极点列向量和增益系数。

线性系统模型的变换函数 函数名 功能说明 ss2tf 状态空间模型转换为传递函数模型 zp2tf 零-极点增益模型转换为传递函数模型 ss2zp 状态空间模型转换为零-极点增益模型 zp2ss 零-极点增益模型转换为状态空间模型 ss2sos 状态空间模型转换为二次分式模型 zp2sos 零-极点增益模型转换为二次分式模型 tf2ss 传递函数模型转换为状态空间模型 sos2tf 二次分式模型转换为传递函数模型 tf2zp 传递函数模型转换为零-极点增益模型 sos2zp 二次分式模型转换为零-极点增益模型 tf2sos 传递函数模型转换为二次分式模型 sos2ss 二次分式模型转换为状态空间模型

[例4-18] 求离散时间系统 的零、极点向量和增益系数。 在命令窗口输入: >> num=[2,3]; den=[1,0.4,1]; >> [num,den]=eqtflength(num,den); %使长度相等 >> [z,p,k]=tf2zp(num,den) 屏幕显示为 z =  0 -1.5000 p = -0.2000 + 0.9798i   -0.2000 - 0.9798i k = 2

[num,den]=series(num1,den1,num2,den2) 4.4.3 系统互联与系统结构 1. 系统的级联 MATLAB实现函数series( ) 格式:[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2) 或 [num,den]=series(num1,den1,num2,den2) 将系统1、系统2级联,可得到级联连接的传递函数形式为:

[num,den]=parallel(num1,den1,num2,den2) 2. 系统的并联 MATLAB实现函数parallel( ) 格式:[A,B,C,D]=parallel(A1,B1,C1,D1,A2,B2,C2,D2) 或 [num,den]=parallel(num1,den1,num2,den2) 将系统1、系统2并联,可得到并联连接的传递函数形式为: 3. 两个系统的反馈连接 函数feedback 格式:[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign) 或 [num,den]=feedback(num1,den1,num2,den2,sign) 将系统1和系统2进行反馈连接,sign表示反馈方式(默认值为-1); 当sig=+1时表示正反馈;当sig=-1时表示负反馈。

[例4-19] 求两个单输入单输出子系统 的级联、并联和反馈后系统的传递函数。MATLAB源程序为: num1=1; den1=[1,1]; %系统1 num2=2; den2=[1,2]; %系统2 [nums,dens]=series(num1,den1,num2,den2) %实现两个系统级联 [nump,denp]=parallel(num1,den1,num2,den2) %实现两个系统并联 [numf,denf]=feedback(num1,den1,num2,den2) %实现两个系统反馈 程序运行结果为: nums = 0 0 2 ; dens = 1 3 2 nump = 0 3 4 ; denp = 1 3 2 numf = 0 1 2 ;  denf = 1 3 4 因此,各系统的传递函数分别为:

4.5 线性时不变系统的响应 4.5.1 线性时不变系统的时域响应 1.连续LTI系统的响应 4.5.1 线性时不变系统的时域响应 1.连续LTI系统的响应 用MATLAB中的卷积函数conv( )来实现。 2.离散LTI系统的响应 用MATLAB中的卷积函数conv( )来实现。

3.时域响应函数 (1)对任意输入的连续LTI系统响应函数lsim( ) 格式:[y,x]=lsim(a,b,c,d,u,t) 功能:返回连续LTI系统 对任意输入时系统的输出响应y和状态记录x,其中u给出每个输入的时序列,一般 情况下u为一个矩阵;t用于指定仿真的时间轴,它应为等间隔。 (2)对任意输入的离散LTI系统响应函数dlsim( ) 格式:[y,x]=dlsim(a,b,c,d,u) 功能:返回离散LTI系统 对输入序列u的响应y和状态记录x。

4.5.2 LTI系统的单位冲激响应 1. 求连续LTI系统的单位冲激响应函数impulse( ) 格式:[Y,T] = impulse(sys) 或impulse(sys) 功能:返回系统的响应Y和时间向量T,自动选择仿真的时间范围。其中sys可为 系统传递函数、零极增益模型或状态空间模型。 2. 求离散系统的单位冲激响应函数dimpulse( ) 格式:[y,x]=dimpulse(num,den) 功能:返回项式传递函数 的单位冲激响应y向量和时间状态历史记录x向量。

4.5.3 时域响应的其它函数 1. 求连续LTI系统的零输入响应函数initial( ) 格式:[y,t,x]=initial(a,b,c,d,x0) 功能:计算出连续时间LTI系统由于初始状态x0所引起的零输入响应y。其中x为状态记录,t为仿真所用的采样时间向量。 2. 求离散系统的零输入响应函数dinitial( ) 格式:[y,x,n]=dinitial(a,b,c,d,x0) 功能:计算离散时间LTI系统由初始状态x0所引起的零输入响应y和状态响应响应x, 取样点数由函数自动选取。n为仿真所用的点数。 3. 求连续系统的单位阶跃响应函数step( ) 格式:[Y,T] = step(sys)  功能:返回系统的单位阶跃响应Y和仿真所用的时间向量T,自动选择仿真的时间范围。其中sys可为系统传递函数(TF)、零极增益模型(ZPK)或状态空间模型(SS)。 4. 求离散系统的单位阶跃响应函数dstep( ) 格式:[y,x]= dstep (num,den) 功能:返回多项式传递函数G(z)=num(z)/den(z)表示的系统单位阶跃响应。

4.6线性时不变系统的频率响应 1.求模拟滤波器Ha(s)的频率响应函数freqs( ) 格式:H=freqs(B,A,W) 功能:计算由向量W(rad/s)指定的频率点上模拟滤器系统函数Ha(s)的频率响 应Ha(jΩ),结果存于H向量中。 [例4-31] 已知某模拟滤波器的系统函数 求该模拟滤波器的频率响应。MATLAB源程序如下。 B=1;A=[1 2.6131 3.4142 2.6131 1]; W=0:0.1:2*pi*5; freqs(B,A,W) 图4.30 模拟滤波器的频率响应

2.求数字滤波器H(z)的频率响应函数freqz( ) 格式:H=freqz(B,A,W) 功能:计算由向量W(rad)指定的数字频率点上(通常指在H(z)的频率响应H(ejw )。 [例4-32] 已知某滤波器的系统函数为 求该滤波器的频率响应。MATLAB源程序为: B=[1 0 0 0 0 0 0 0 –1]; A=1; freqz(B,A) 该程序运行所绘出的幅频与 相频性曲线如图4.31所示。 图4.31滤波器幅度和相位曲线

3.滤波函数filter 格式:y=filter(B,A,x) 功能:对向量x中的数据进行滤波处理,即差分方程求解,产生输出序列向量y。B和A分别为数字滤波器系统函数H(z)的分子和分母多项式系数向量。 [例4-33] 设系统差分方程为 ,求该系统对信号 的响应。 MATLAB源程序为: B=1; A=[1,-0.8]; N=0:31; x=0.8.^n; y=filter(B,A,x); subplot(2,1,1);stem(x) subplot(2,1,2);stem(y) 该程序运行所得结果如图4.32所示。 图4.32系统对信号的响应

4.7傅里叶(Fourier)变换 4.7.1连续时间、连续频率-傅里叶变换 4.7.2 连续时间、离散频率-傅里叶级数 正变换: 逆变换:

4.7.5离散时间、离散频率-离散傅里叶变换(DFT) 4.7.3 时间离散、连续频率-序列傅里叶变换 正变换: 逆变换: 4.7.4 离散时间、离散频率-离散傅里叶级数 正变换: 逆变换: 4.7.5离散时间、离散频率-离散傅里叶变换(DFT) 正变换: 逆变换:

功能:采用FFT算法计算序列向量X的N点IDFT变换。 格式:X=fft(x, N) 功能:采用FFT算法计算序列向量x的N点DFT变换, 当N缺省时,fft函数自动按x的长度计算DFT。当N为2整数次幂时,fft按基-2算法计算,否则用混合算法。 2.一维快速逆傅里叶变换函数ifft 格式:x=ifft(X, N) 功能:采用FFT算法计算序列向量X的N点IDFT变换。 [例4-36] 用快速傅里叶变换FFT计算下面两个序列的卷积。 , 并测试直接卷积和快速卷积的时间。 图4.35 快速卷积框图

MATLAB程序(部分): %线性卷积 xn= sin(0.4*[1:15]); %对序列x(n)赋值, M=15 hn= 0.9.^(1:20);   %对序列h(n)赋值, N=20 yn=conv(xn,hn); % 直接调用函数conv计算卷积 %园周卷积 L=pow2(nextpow2(M+N-1)); Xk=fft(xn,L); Hk=fft(hn,L); Yk=Xk.*Hk; yn=ifft(Yk,L); 图4.36 x(n),h(n)及其线性卷积波形

4.8 IIR数字滤波器的设计方法 1. 数字滤波器的频率响应函数 幅度响应: 相位响应: 图4.37 理想低通、高通、带通、带阻数字滤波器幅度特性

2. 滤波器的技术指标 幅度响应指标、相位响应指标 通带要求: 阻带要求: 通带最大衰减: 图4.38 数字低通滤波器的幅度特性 阻带最小衰减:

4.8.1冲激响应不变法 1. 冲激响应不变法设计IIR数字滤波器的基本原理: 2.MATLAB信号处理工箱中的专用函数impinvar( ): 格式:[BZ,AZ] =impinvar(B,A,Fs) 功能:把具有[B,A]模拟滤波器传递函数模型转换成采样频率为Fs(Hz)的数字滤波器的 传递函数模型[BZ,AZ]。采样频率Fs的默认值为Fs=1。 [例4-37] MATLAB源程序如下: num=[1]; %模拟滤波器系统函数的分子 den=[1,sqrt(5),2,sqrt(2),1]; %模拟滤波器系统函数的分母 [num1,den1]=impinvar(num,den) %求数字低通滤波器的系统函数 程序的执行结果如下: num1 = -0.0000 0.0942 0.2158 0.0311 den1 = 1.0000 -2.0032 1.9982 -0.7612 0.1069

4.8.2双线性变换法 双线性变换利用频率变换关系: MATLAB信号处理工具箱中的专用双线性变换函数bilinear( ) 格式:[numd,dend]=bilinear(num,den,Fs) 功能:把模拟滤波器的传递函数模型转换成数字滤波器的传递函数模型。 [例4-38] MATLAB源程序如下: num=1; %模拟滤波器系统函数的分子 den=[1,sqrt(3),sqrt(2),1]; %模拟滤波器系统函数的分母 [num1,den1]=bilinear(num,den,1) %求数字滤波器的传递函数 运算的结果如下:  num1 = 0.0533 0.1599 0.1599 0.0533 den1 = 1.0000 -1.3382 0.9193 -0.1546

4.8.3 IIR数字滤波器的频率变换设计法 1. IIR数字滤波器的频率变换设计法的基本原理 根据滤波器设计要求,设计模拟原型低通滤波器,然后进行频率变换,将其转换为相应的模拟滤波器(高通、带通等),最后利用冲激响应不变法或双线性变换法,将模拟滤波器数字化成相应的数字滤波器。 图4.39 IIR数字滤波器MATLAB设计步骤流程图

1.MATLAB的典型设计 利用在MATLAB设计IIR数字滤波器可分以下几步来实现 (1)按一定规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标; (2)根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N和截止频率Wc; (3)利用最小阶数N产生模拟低通滤波原型; (4)利用截止频率Wc把模拟低通滤波器原型转换成模拟低通、高通、带通或带阻滤波器; (5)利用冲激响应不变法或双线性不变法把模拟滤波器转换成数字滤波器。 [例4-39] 设计一个数字信号处理系统,它的采样率为Fs=100Hz,希望在该系统中设计一个Butterworth型高通数字滤波器,使其通带中允许的最小衰减为0.5dB,阻带内的最小衰减为40dB,通带上限临界频率为30Hz,阻带下限临界频率为40Hz。

MATLAB源程序设计如下: %把数字滤波器的频率特征转换成模拟滤波器的频率特征 wp=30*2*pi;ws=40*2*pi;rp=0.5;rs=40;Fs=100; [N,Wc]=buttord(wp,ws,rp,rs,'s');  %选择滤波器的最小阶数 [Z,P,K]=buttap(N);  %创建Butterworth低通滤波器原型 [A,B,C,D]=zp2ss(Z,P,K); %零-极点增益模型转换为状态空间模型 [AT,BT,CT,DT]=lp2hp(A,B,C,D,Wc);  %实现低通向高通的转变 [num1,den1]=ss2tf(AT,BT,CT,DT); %状态空间模型转换为传递函数模型 %运用双线性变换法把模拟滤波器转换成数字滤波器 [num2,den2]=bilinear(num1,den1,100);  [H,W]=freqz(num2,den2);  %求频率响应 plot(W*Fs/(2*pi),abs(H));grid; %绘出频率响应曲线 xlabel('频率/Hz'); ylabel('幅值') 程序运行结果如图4.40所示。

wp1=650;wp2=850;ws1=700;ws2=800;rp=0.1;rs=50;Fs=2000; 2.MATLAB的直接设计 图4.39 IIR数字滤波器MATLAB设计步骤流程图 [例4-41] 试设计一个带阻IIR数字滤波器,其具体的要求是:通带的截止频率:wp1=650Hz、wp2=850Hz;阻带的截止频率:ws1=700Hz、ws2=800Hz;通带内的最大衰减为rp=0.1dB;阻带内的最小衰减为rs=50dB;采样频率为Fs=2000Hz。MATLAB源程序设计如下: wp1=650;wp2=850;ws1=700;ws2=800;rp=0.1;rs=50;Fs=2000; wp=[wp1,wp2]/(Fs/2);ws=[ws1,ws2]/(Fs/2);  %利用Nyquist频率频率归一化 [N,wc]=ellipord(wp,ws,rp,rs,'z'); %求滤波器阶数 [num,den]=ellip(N,rp,rs,wc,'stop');     %求滤波器传递函数 [H,W]=freqz(num,den);          %绘出频率响应曲线 plot(W*Fs/(2*pi),abs(H));grid; xlabel('频率/Hz');ylabel('幅值') 该程序运行后的幅频响应曲线如图4.42所示。

4.9 FIR数字滤波器设计 4.9.1窗函数设计法 FIR数字滤波器的单位冲激响应h(n)满足偶(奇)对称 h(n)=h(N-n-1) 或 h(n)=-h(N-n-1) FIR数字滤波器具有线性相位: 或 4.9.1窗函数设计法 窗函数设计的基本原理: h(n)=w(n)hd(n) w(n)为窗函数, hd(n)理想数字滤波器的单位冲激响应。 在MATLAB信号处理工具箱中为用户提供了Boxcar (矩形)、Bartlet(巴特利特)、Hanning(汉宁)等窗函数,这些窗函数的调用格式相同。 格式:w = boxcar(M) 功能:返回M点矩形窗序列。 MATLAB信号处理工具箱中的窗函数法设计FIR数字滤波器的专用命令fir1( )。 格式:B=fir1(N,wc) 功能:设计一个具有线性相位的N阶(N点)的低通FIR数字滤波器,返回的向量B 为滤波器的系数(单位冲激响应序列),其长度为N+1。

[例4-43] 用矩形窗设计线性相位FIR低通滤波器。该滤波器的通带截止频率wc=pi/4,单位脉冲响h(n)的长度M=21。并绘出h(n)及其幅度响应特性曲线。MATLAB源程序为: M=21; wc=pi/4;         % 理想低通滤波器参数 n=0:M-1; r=(M-1)/2; nr=n-r+eps*((n-r)==0); hdn=sin(wc*nr)/pi./nr;   % 计算理想低通单位脉冲响应hd(n) if rem(M,2)~=0, hdn(r+1)=wc/pi; end  % M为奇数时,处理n=r点的0/0型 wn1=boxcar(M); % 矩形窗 hn1=hdn.*wn1'; % 加窗 subplot(2,1,1);stem(n,hn1,'.'); line([0,20],[0,0]); xlabel('n'),ylabel('h(n)'),title('矩形窗设计的h(n)'); hw1=fft(hn1,512); w1=2*[0:511]/512;   %求频谱 subplot(2,1,2), plot(w1,20*log10(abs(hw1))) xlabel('w/pi'), ylabel('幅度(dB)'); title('幅度特性(dB)'); 程序运行结果如图4.44所示。

4.9.2频率抽样法 1. 频率抽样法的基本原理 对所期望的滤波器的频率响应Hd(ejw)进行等间隔采样获得H(k),利用h(n)=IDFT[H(k)]求得FIR的单位冲激响应。 2. MATLAB信号处理工具箱中的频率抽样法专用函数命令fir2( ) 格式:B=fir2(N,F,A) 功能:设计一个N阶的FIR数字滤波器,其频率响应由向量F和A指定,滤波器的系数(单位冲激响应)返回在向量B中,长度为N+1。向量F和A分别指定滤波器的采样点的频率及其幅值,F中的频率必须在0.0到1.0之间,1.0对应于采样频率的一半。它们必须按递增的顺序从0.0开始到1.0为结束。

[例4-47] 试用频率抽样法设计一个FIR低通滤波器,该滤波器的截止频率为0.5pi,频率抽样点数为33。MATLAB源程序为: N=32; F=[0:1/32:1]; %设置抽样点的频率,抽样频率必须含0和1。 A=[ones(1,16),zeros(1,N-15)]; %设置抽样点相应的幅值 B=fir2(N,F,A); freqz(B); %绘制滤波器的幅相频曲线 figure(2);stem(B,'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('h(n)'); 图4.49滤波器的频率响应和单位冲激响应序列

4.9.3 MATLAB的其它相关函数 1.最小二乘逼近法设计线性相位FIR滤波器函数fircls( ) 3.最小二乘逼近法设计线性相位FIR数字滤波器函数firls( ) 4.升余弦FIR滤波器设计函数firrcos( ) 5.Parks-McClellan优化等纹波FIR滤波器设计函数remez( )