《数字信号处理上机指导》07级

更新时间:2023-10-01 16:57:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数字信号处理》 上机实验指导书

光电信息与通信工程学院

电子信息工程系

北京信息科技大学 2009年7月

目 录

实验一 离散傅里叶变换的性质及应用......................................... 1 实验二 IIR数字滤波器设计.......................................................... 5 实验三 FIR数字滤波器设计 ......................................................... 7

2

实验一 离散傅里叶变换的性质及应用

一、实验目的

1.了解DFT的性质及其应用 2.熟悉MATLAB编程特点

二、实验仪器及材料

计算机,MATLAB软件

三、实验内容及要求

1.用三种不同的DFT程序计算x(n)?R5(n)的256点离散傅里叶变换X(k),并比较三种程序计算机运行时间。

(1)编制用for loop语句的M函数文件dft1.m,用循环变量逐点计算X(k); (2)编写用MATLAB矩阵运算的M函数文件dft2.m,完成下列矩阵运算:

000WN? X(0)??WNWN???012 X(1)WWWNNN???? ? ?????????0N?12(N?1)WN??X(N?1)????WNWN??x(0)????N?1?x(1)WN??? ?????????? WN(N?1)(N?1)????x(N?1)???WN0(3)调用fft库函数,直接计算X(k);

(4)分别调用上述三种不同方式编写的DFT程序计算序列x(n)的离散傅里叶变换

X(k),并画出相应的幅频和相频特性,再比较各个程序的计算机运行时间。

2.研究实序列的DFT特点及性质。

已知序列x(n)?5cos(2?rn/N)RN(n),若N?128计算下列三种情况下序列的DFT的幅度、实部及虚部,并用图形表示相应的x(n),X(k),Re?X(k)?,Im?X(k)?。

(1)x(n)?5cos(2?rn/N),r?5 (2)x(n)?5cos(2?rn/N),r?4.4 (3)x(n)?5cos(2?rn/N),r?0

3.利用DFT实现两序列的卷积运算,并研究DFT点数与混叠的关系。 (1)已知两序列

1

x(n)?R3(n) h(n)?(n?1)R5(n)

(2)用直接法(即用线性卷积的定义计算,见下式)计算线性卷积y(n)=x(n)*h(n)的结果,并以图形方式表示结果;

N?1 y(n)?0?n?N?M?x(m)?h(n?m),   m?0?2

其中:序列x(n),(0?n?N?1)和序列h(n),(0?n?M?1)

(3)用MATLAB编制利用DFT计算线性卷积y(n)=x(n)*h(n)的程序;分别令圆周卷积的点数为L=5,6,7,8,以图形方式表示结果。

(4)对比直接法和圆周卷积法所得的结果。

四、思考题

1. 直接计算N=256点的DFT与用FFT计算256点,理论上速度差别应有多少? 2. 解释为什么在实验内容2中三种情况下DFT结果不同?验证了什么DFT性质?若

抽样频率为1000Hz,问三种情况下序列x(n)的信号频率是多少?

3. 说明为什么在实验内容3中L=6,9,12时采用FFT法对两序列计算圆周卷积的结

果不同?与线性卷积y(n)=x(n)*h(n)的结果关系如何?

五、实验报告要求

1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明; 2.对实验结果作理论计算,解释实验结果; 3.回答思考题;

4.总结实验体会及实验中存在的问题。

六、参考程序

1.dft1.m:用for循环计算DFT。 function[Am,pha] = dft1(x) N = length(x); w = exp(-j*2*pi/N); for k=1:N sum = 0; for n = 1:N

sum = sum+x(n)*w^((k-1)*(n-1));

2

end

Am(k) = abs(sum); pha(k) = angle(sum); end

2.dft2.m:用MATLAB矩阵计算DFT。 function[Am,pha] = dft2(x) N = length(x);

n = [0:N-1];k = [0:N-1]; w = exp(-j*2*pi/N);nk = n’*k; wnk = w.^(nk); Xk = x*wnk;

Am = abs(Xk); pha = angle(Xk);

3.dft3.m:调用FFT库函数计算DFT。 function[Am,pha] = dft3(x) Xk = fft(x);

Am = abs(Xk); pha = angle(Xk);

4.lab_dft.m:调用M函数文件的M程序文件示例。 x = [ones(1,8),zeros(1,248)]; t = cputime;

[Am1,pha1] = dft1(x); t1 = cputime-t;

5.本实验所用的部分MATLAB函数: ? abs(x) : 对复数取模(对实数取绝对值)。 ? real(x)

: 对复数取实部。

? imag(x) : 对复数取虚部。

? y=conv(x1,x2): 将序列x1(n)与序列x2(n)做线性卷积,结果赋给序列y(n)。? y=fft(x,L) : 将序列x(n)做L点快速傅立叶变换,结果赋给序列y(n)。

3

? y=ifft(x,L) : 将序列x(n)做L点快速傅立叶反变换,结果赋给序列y(n)。 ? stem(x,y) : 以x为横坐标,y为纵坐标画离散曲线。

4

实验二 IIR数字滤波器设计

一、实验目的

1、熟悉IIR数字滤波器的设计原理与方法。 2、掌握数字滤波器的计算机软件实现方法。

3、通过观察对实际心电图信号的滤波作用,学习数字滤波器在实际中的应用。

二、实验仪器及材料

计算机,MATLAB软件

三、实验内容及要求

1.设计巴特沃斯低通数字滤波器对人体心电信号进行滤波

(1) 人体心电图信号在测量过程中会受到工业高频干扰,所以必须经过低通滤波处理,才能作为判断心脏功能的有用信息。以下为一个实际心电图信号采样序列x(n),其中存在高频干扰,采样周期T=1秒。在实验中,以x(n)作为输入序列,滤除其中干扰成分。

x(n)=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0]

对序列x(n)用FFT做频谱分析,生成x(n)的频谱图。

(2) 用冲激响应不变法设计一个巴特沃斯低通IIR数字滤波器H(z)。 设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;

在阻带内 [0.3π, π]频率区间上,最小衰减大于15dB。

写出数字滤波器H(z)的表达式,画出滤波器的幅频响应曲线|H(ej?)|。

(3) 用所设计的滤波器对实际心电图信号采样序列x(n)进行滤波处理,编写程序,求滤波后的序列y(n),并分别画出滤波前后的心电图信号波形图和频谱图。

2.用help查看内部函数cheb1ord.m及cheby1.m,了解调用格式,并用此函数设计一个数字切贝雪夫带通滤波器。

设计指标参数为:

抽样频率fs=2kHz;

在200Hz≤f≤400Hz时,最大衰减小于2dB; 在f≤100Hz,f≥600Hz,最小衰减大于20dB。

编程设计,求数字滤波器H(z)的表达式,画出滤波器的幅频响应曲线|H(ej?)|。

5

四、思考题

1.对比实验内容1中滤波前后心电图信号x(n), y(n),说明滤波器的作用。 2.双线性变换与冲激不变法比较有何优缺点?

五、实验报告要求

1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明; 2.对实验结果作理论计算,解释实验结果; 3.回答思考题;

4.总结实验体会及实验中存在的问题。

六、参考

本实验所用的MATLAB函数: ? length(x): 求序列x长度。

? [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s') :计算模拟Butterworth滤波器的最小阶次n和截

止频率为Wn。

? [b,a] = butter(n,Wn,'s'):设计模拟截止频率为Wn(rad/s)的n阶 Butterworth低通

滤波器,返回值为模拟滤波器的系数。

? [numd,dend] = bilinear(num,den,fs) :双线性变换,返回值为数字滤波器的系数。 ? [BZ,AZ] = impinvar(B,A,Fs):冲激响应不变法,返回值为数字滤波器的系数。 ? [H w]=freqz(b,a):由滤波器分母多项式系数构成的a向量和分子多项式系数构成的

b向量求系统频响。

? y=filter(b,a,x): 将序列x(n) 通过滤波器滤波后生成序列y(n),滤波器的分母多项式

系数构成a向量,分子多项式系数构成b向量。

6

实验三 FIR数字滤波器设计

一、实验目的

1.熟悉线性相位FIR数字滤波器特性。

2.掌握用窗函数法设计FIR数字滤波器的原理和方法,理解各种窗函数对滤波性能的影响。

3.掌握用频率抽样法设计FIR数字滤波器的原理和方法,理解过渡带上抽样点数对滤波性能的影响。

二、实验仪器及材料

计算机,MATLAB软件

三、实验内容及方法

1.用窗函数法设计FIR数字低通滤波器 FIR数字低通滤波器技术指标如下:

?p?0.2?,?s?0.4?,?1?0.25dB?2?50dB

选取合适的窗函数编程设计,求滤波器的单位脉冲响应h(n),并画出h(n)的幅频特性和相频特性曲线。

2.用频率抽样法设计FIR数字低通滤波器,指标同实验内容1。

注意要选取合适的抽样点数N使得在过渡带内有抽样点,编程设计,求滤波器的单位脉冲响应h(n),并画出h(n)的幅频特性和相频特性曲线。

四、思考题

1.总结窗函数法中窗函数主要参数对滤波性能的影响。 2.频率抽样法设计FIR滤波器的优缺点是什么?

五、实验报告要求

1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明; 2.对实验结果作理论计算,解释实验结果; 3.回答思考题;

4.总结实验体会及实验中存在的问题。

六、参考

本实验所用的MATLAB函数:

? h = freqz(b,a,w) :返回值为频率响应

7

? abs(x): 对序列x(n)每一项取绝对值或模值; ? angle(x): 对序列x(n)每一项取相位;

? boxcar(N): 生成长度为N的矩形窗(矩形序列); ? triang(N): 生成长度为N的三角窗; ? hanning(N): 生成长度为N的汉宁窗; ? hamming(N): 生成长度为N的海明窗; ? blackman(N): 生成长度为N的布拉克曼窗。

8

本文来源:https://www.bwwdw.com/article/x9td.html

Top