资源描述
《数字信号处理》实验指导书
实验一 离散傅里叶变换
一、实验目的
(1) 熟悉Matlab的主要操作命令;掌握Matlab的基本使用方法,能够运用Matlab软件分别产生常见的连续信号和离散信号,并对其进行一定的运算。
(2) 理解离散傅立叶变换是信号分析与处理的一种重要变换,特别是FFT在数字信号处理中的高效率应用。掌握DFT的理论,通过DFT对典型信号进行的频谱分析,加深对DFT的理解。
(3) 通过对同一信号,作不同点数的FFT,比较其对应的频谱,比较两者的异同点,加深理解信号频谱概念和谱分析的原理与方法,了解快速傅立叶变换(FFT)可以提高运算量的特点,并运用Matlab软件分别对离散周期信号和非周期信号进行谱分析,同时绘出幅度频谱和相位频谱。
二、预习要求
1、掌握连续信号和离散信号的特点及其运算方法;
2、熟悉Matlab的基本编程语言及其变量、数组、向量与矩阵和部分运算符的使用;
3、掌握部分Matlab基本数学函数和作图函数的使用。
三、和实验相关的一些功能函数
正弦信号:A*sin(w0*t+phi),A*cos(w0*t+phi),A*sin(omega*n+phi);
方波信号:square(w0*t),square(w0*t,DUTY),A*square(omega*n);注意DUTY的取值情况。
指数信号:A*exp(a*t);
矩形脉冲信号:rectpulse(t),rectpulse(t,w);
单位脉冲信号和单位阶跃信号:ones(1,n)和zeros(1,n);
基本信号运算函数:abs(幅值)、 angle(相角)。
四、实验原理
1、有限长序列x(n)的DFT的概念和公式:
2、FFT算法
调用格式是 X= fft(x) 或 X=fft(x,N)
对前者,若x的长度是2的整数次幂,则按该长度实现x的快速变换,否则,实现的是慢速的非2的整数次幂的变换;对后者,N应为2的整数次幂,若x的长度小于N,则补零,若超过N,则舍弃N以后的数据。Ifft的调用格式与之相同。
五、实验内容及实验步骤
1、使用MATLAB产生如下信号:
(1)x(t)=-2u(t-1),-1<t<5
>> clear
>> clear all;close all;
>> t=-1:0.01:5;t0=1;
>> u=[(t-t0)>=0];
>> x=-2*u;
>> plot(t,x);axis([-1,5,-2.5,0.5]);
(2)x(n)=2d(n+n0),n0=2
clear all close all;
n=-10:0.01:10;
n0=2;
t=n+n0;
u=[t==0];
x=2*u;
plot(n,x)
2、选择合适的变换区间长度N,用DFT对下列信号进行谱分析,画出幅频特性和相频特性曲线。
(1)x1(n)=2cos(0.2πn)R10(n);
(2)x2(n)=sin(0.45πn)sin(0.55πn)R51(n);
(3)x3(n)=2-|n|R21(n+10)。
六、问题与思考
对序列x(n)来说,做 N=64 点和 N=256 点的 DFT,得到的幅频特性相同吗?试比较异同点。
七、实验报告要求
1、独立完成以上实验内容;
2、采用标准实验报告纸书写实验报告;
3、实验报告内容包括:实验名称、实验目的,实验原理,所采用函数的基本说明、实验内容、程序清单(附主要语句说明或注释)、实验图表(打印或手绘)、归纳总结实验结果、心得体会及其他。
实验二 基于MATLAB的IIR数字滤波器的设计
一、实验目的
了解IIR数字滤波器的特点,了解IIR数字低通滤波器的设计方法和设计过程,掌握Matlab软件所提供的各种设计函数,运用Matlab软件分别实现基于脉冲响应不变法和双线性变换法的IIR滤波器设计。
二、预习要求
1、掌握IIR数字滤波器的特点及设计方法,重点掌握脉冲响应不变法和双线性变换法设计巴特沃斯的方法;
2、掌握部分Matlab基本数学函数、常用IIR数字滤波器设计和作图函数的使用;
3、掌握Matlab编程的基本方法。
三、实验所采用的功能函数
1、IIR滤波器阶数选择函数:buttord(巴特沃斯滤波器阶数选择函数)
调用格式:[N,wc]=buttord(wp,ws,Rp,As) (适用数字滤波器)
[N,wc]=buttord(wp,ws,Rp,As, 's') (适用模拟滤波器)
2、完整滤波器设计函数:butter(巴特沃斯滤波器设计)
调用格式:[B,A]=butter(N,wc,'ftype')
[B,A]=butter(N,wc,'ftype','s')
3、归一化模拟低通滤波器原型设计函数:buttap(巴特沃斯滤波器原型)
调用格式:[z,p,G]=buttap(N)
如果要从计算得到的零、极点得到系统函数的分子和分母多项式系数向量B和A,可以调用结构转换系数[b,a]=zp2tf(z,p,G)和频率转换[B,A]=lp2lp(B,A,wc)。
4、滤波器离散化函数:
调用格式:[Bz,Az]=bilinear(B,A) (双线性变换法)
调用格式:[Bz,Az]=impinvar(B,A) (脉冲响应不变法)
5、数字滤波器频率响应:freqz
调用格式:[H,w]=freqz(Bz,Az,M)
6、各类基本信号和运算函数;
abs(幅值)、 angle(相角)
四、实验原理
IIR数字滤波器的任务就是寻求一个因果、物理可实现的系统函数,使它的频率响应满足所希望得到的频域指标,即符合给定的通带衰耗、阻带衰耗、通带截止频率和阻带截止频率。
本次实验就是通过双线性变换法和脉冲响应不变法设计一个巴特沃斯低通IIR数字滤波器。该设计方法就是先根据频率响应指标,设计出相应的模拟滤波器H(s),再通过脉冲响应不变法或双线性变换法转换为数字滤波器H(z),其过程如下:
五、实验内容及实验步骤
设计一个工作于采样频率80kHz的巴特沃斯数字低通滤波器,要求通带边界频率为4kHz,通带最大衰减为0.5dB,阻带边界频率为20kHz,阻带最小衰减为45dB。分别用脉冲响应不变法和双线性变换法调用MATLAB工具箱函数buttord、butter或buttap、impinvar进行设计,显示数字滤波器系统函数H(z)的系数,绘制损耗函数和相频特性曲线。比较两种方法的设计结果,观察双线性变换法的频率非线性失真和脉冲响应不变法的频谱混叠失真。
1.双线性变换法设计步骤:>> clear all;close all;
(1)确定数字滤波器指标:ωp,ωs,αp,αs;
,
(2)进行非线性预畸变校正,将数字滤波器的技术要求转换为模拟滤波器的技术要求,
,
通带最大衰减αp和阻带最小衰减αs不变;
(3)利用函数[N,wc]=buttord(Wp,Ws,Rp,Rs,’s’),求出模拟低通滤波器的阶次和3dB截止频率。注意:Wp,Ws应该为(2)中的Ωp,Ωs。
(4)运用函数butter(N,wc,’s’)求得模拟低通滤波器的系统函数的分子、分母多项式形式;
(5)利用bilinear函数求出H(z)的分子、分母系数;
(6)利用Freqz函数,求频率响应H(ejω);
(7)作图显示滤波器的幅频特性和相位特性。
clear all;close all;
Fs=80000;T=1/Fs;
wp=(2/T)*tan((2*pi*4000/Fs)/2);ws=(2/T)*tan((2*pi*20000/Fs)/2);
rp=0.5;rs=45;
[N,wc]=buttord(wp,ws,rp,rs,'s');
[B,A]=butter(N,wc,'s');
[Bz,Az]=bilinear(B,A,Fs);
M=0:pi/512:pi;
[Hz,w]=freqz(Bz,Az,M);
Hx=angle(Hz);
subplot(2,1,1);
plot(w,Hx);
xlabel('\omega^pi');ylabel('Ïàλ');
title('Ë«ÏßÐԱ任·¨ÏàÆµÌØÐÔÇúÏß');
subplot(2,1,2);
plot(M/pi,20*log10(abs(Hz)));grid on;
xlabel('\omega^pi');ylabel(' ·ù¶È (dB)');
axis([0,1-100,5]);title('ËðºÄº¯ÊýÇúÏß');
2. 脉冲响应不变法设计步骤
(1)确定数字频率指标:ωp,ωs,αp,αs;
,
(2)采用脉冲响应不变法求得模拟频率指标;
,
通带最大衰减αp和阻带最小衰减αs不变;
(3)利用函数[N,wc]=buttord(Wp,Ws,Rp,Rs,’s’),求出模拟低通滤波器的阶次和3dB截止频率。注意:Wp,Ws应该为(2)中的Ωp,Ωs。
(4)运用函数butter(N,wc,’s’)求得模拟低通滤波器的系统函数的分子、分母多项式形式;
(5)利用impinvar(B,A)函数求出H(z)的分子、分母系数;
(6)利用freqz函数,求频率响应H(ejω);
(7)作图显示滤波器的幅频特性和相位特性。
clear all;clc;
Fs=80000;T=1/Fs;
wp=(2*pi*4000/Fs)/T;ws=(2*pi*20000/Fs)/T;
rp=0.5;rs=45;
[N,wc]=buttord(wp,ws,rp,rs,'s');
[z,p,G]=buttap(N);
[b,a]=zp2tf(z,p,G);
[B,A]=lp2lp(b,a,wc);
[Bz,Az]=impinvar(B,A,Fs);
M=0:pi/512:pi;
[Hz,w]=freqz(Bz,Az,M);
Hx=angle(Hz);
subplot(2,1,1);
plot(w,Hx,'r','linewidth',2);
xlabel('\omega^pi');ylabel('Ïàλ');
title('Âö³åÏìÓ¦²»±ä·¨ÏàÆµÌØÐÔÇúÏß');
subplot(2,1,2);
plot(M/pi,20*log10(abs(Hz)),'r','linewidth',2);grid on;
xlabel('\omega^pi');ylabel(' ·ù¶È (dB)');
axis([0,1,-100,5]);title('ËðºÄº¯ÊýÇúÏß');
六、问题与思考
脉冲响应不变法和双线性变换法在设计IIR 滤波器时各自优点。
七、实验报告要求
1、独立完成以上实验内容;
2、采用标准实验报告纸书写实验报告;
3、实验报告内容包括:实验名称、实验目的,实验原理,所采用函数的基本说明、实验内容、程序清单(附主要语句说明或注释)、实验图表(打印或手绘)、归纳总结实验结果、心得体会及其他。
实验三 基于MATLAB的FIR数字滤波器的设计
一、实验目的
1、了解FIR数字滤波器的特点、设计方法和设计过程;
2、掌握Matlab软件所提供的基本函数;
3、掌握常用窗函数的特性、表示式和Matlab实现
4、加深理解FIR数字滤波器的时域特性和频率特性。
二、预习要求
1.了解FIR数字滤波器的特点、设计方法和设计过程,掌握Matlab软件所提供的基本函数;
2.掌握常用窗函数的特性、表示式和Matlab实现,并根据给定的设计要求,运用Matlab软件分别实现基于窗函数法的FIR滤波器设计,求出滤波器的阶数、系统函数,并绘出相应的幅度响应曲线。
三、实验所采用的功能函数
1. 窗函数法FIR滤波器设计fir1:
2. fft和ifft、freqz函数;
3. 各类基本信号和运算函数;
4. 常用窗函数:boxcar(N)、hanning(N)、hamming(N)、blackman(N)。
四、实验原理
FIR数字滤波器总是稳定的系统,且可以设计成具有线性相位的。其在数据通信、图像处理、语音信号处理等实际应用领域中得到广泛的应用。N阶有限冲激响应(FIR)数字滤波器的转移函数为:,系统的单位脉冲响应h(n)是长度为N的有限长因果序列。当满足h(n)=h(n-N-1)的对称条件时,该FIR数字滤波器具有线性相位。FIR数字滤波器的设计方法主要有窗函数法和频率采样法。本次实验主要是采用窗函数法设计FIR滤波器。
窗函数法设计FIR滤波器的过程为:
是理想滤波器的频域系统函数,是设计的实际滤波器的频响。加窗的作用是通过把理想滤波器的无限长脉冲响应乘以窗函数来产生一个被截断的脉冲响应,即,并对频响进行平滑。
五、实验内容及实验步骤
1、实验内容
调用MATLAB工具箱函数fir1设计线性相位低通FIRDF, 要求希望逼近的理想低通滤波器通带截止频率ωc=π/4 rad,滤波器长度N=21。分别选用矩形窗、Hanning窗、Hamming窗和Blackman窗进行设计,绘制用每种窗函数设计的单位脉冲响应h(n)及其幅频特性曲线,并进行比较,观察各种窗函数的设计性能。
2、窗函数法设计步骤
(1)选择窗函数类型和长度
(2)构造希望逼近的频率响应函数
(3)按照IDFT求得理想脉冲响应:
(4) 加窗得到FIRDF的单位脉冲响应。
以上(2)~(4)步骤的解题过程可调用工具箱函数fir1实现。
其调用格式:h(n)=fir1(M,wc,’type’,window),返回截止频率为ωc的M阶(单位脉冲响应h(n)长度N=M+1)FIR低通滤波器系数向量hn;type为滤波器的类型,如低通、高通、带通、带阻等,缺省时为低通;window为选定的窗函数类型,默认选用哈明窗。滤波器单位脉冲响应h(n)与向量hn的关系为 h(n)=hn(n+1) ,n=0,1,2,…,M,而且满足线性相位条件:。wc为对π归一化的数字频率,0≤wc≤1。
(5)用dft或freqz函数求得hn频率响应;
(6)分别画出每种窗函数设计的及其幅频特性曲线。
六、 问题与思考
1、如果没有给定h(n)的长度N,而是给定了通带边缘截止频率ωc和阻带临界频率ωp,以及相应的衰减,你能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?
2、在FIR窗函数设计中,为何采用不同特性的窗函数?选用窗函数的依据是什么?
七、实验报告要求
1、独立完成以上实验内容;
2、采用标准实验报告纸书写实验报告;
3、实验报告内容包括:实验名称、实验目的,实验原理,所采用函数的基本说明、实验内容、程序清单(附主要语句说明或注释)、实验图表(打印或手绘)、归纳总结实验结果、心得体会及其他。
展开阅读全文