《数字信号处理》
上机实验指导书
光电信息与通信工程学院
电子信息工程专业
北京信息科技大学
20##年11月
目 录
实验一 离散傅里叶变换的性质及应用... 3
实验二 IIR数字滤波器设计... 5
实验一 离散傅里叶变换的性质及应用
一、实验目的
1.了解DFT的性质及其应用
2.熟悉MATLAB编程特点
二、实验仪器及材料
计算机,MATLAB软件
三、实验内容及要求
1.验证 DFT性质。
(1)已知序列,计算序列的6点DFT的幅度、相位、实部及虚部,并用图形表示相应的
。
(2)编程求解和 ,验证
*(3)对序列,自行设计程序验证DFT时移及频移性质。
2.利用DFT实现两序列的卷积运算,并研究DFT点数与混叠的关系。
(1)已知两序列
(2)用直接法(即用线性卷积的定义计算,见下式)计算线性卷积y(n)=x(n)*h(n)的结果,并以图形方式表示结果;
(3)利用DFT计算圆周卷积;分别令圆周卷积的点数为L=8,10,12,以图形方式表示结果。
(4)对比直接法和圆周卷积法所得的结果。
3.利用DFT进行谱分析。
(1)对模拟信号进行谱分析
请问信号的最高频率是多少?
(2)假定抽样频率,编程实现记录数据点数为N=16,32,64 三种情况下的谱分析。分别画出其幅度谱,讨论三种情况幅度谱的区别?幅度谱与频率分辨率的对应关系。
四、思考题
1. 在实验内容1中都验证了什么DFT性质?
2. 说明为什么在实验内容2中L=8,10,12时采用FFT法对两序列计算圆周卷积的结果不同?与线性卷积y(n)=x(n)*h(n)的结果关系如何?
3.说明为什么在实验内容2中为N=16,32,64 三种情况下的谱分析结果不同?周期信号的谱分析的点数应该如何选取?
五、实验报告要求
1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明;
2.对实验结果作理论计算,解释实验结果;
3.回答思考题;
4.总结实验体会及实验中存在的问题。
六、本实验所用的部分MATLAB函数
² abs(x) : 对复数取模(对实数取绝对值)。
² angle(x) : 对复数取相角。
² real(x) : 对复数取实部。
² imag(x) : 对复数取虚部。
² y=conv(x1,x2): 将序列x1(n)与序列x2(n)做线性卷积,结果赋给序列y(n)。
² y=fft(x,L) : 将序列x(n)做L点快速傅立叶变换,结果赋给序列y(n)。
² y=ifft(x,L) : 将序列x(n)做L点快速傅立叶反变换,结果赋给序列y(n)。
² stem(x,y) : 以x为横坐标,y为纵坐标画离散曲线。
实验二 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π时,最大衰减小于2dB;
在阻带内 [0.3π, π]频率区间上,最小衰减大于25dB。
写出数字滤波器H(z)的表达式,画出滤波器的幅频响应曲线。
(3) 用所设计的滤波器对实际心电图信号采样序列x(n)进行滤波处理,编写程序,求滤波后的序列y(n),并分别画出滤波前后的心电图信号波形图和频谱图。
2.用help查看内部函数cheb1ord.m及cheby1.m,了解调用格式。
编程设计教材习题6-2,求模拟滤波器Ha(s)的表达式,画出该模拟滤波器频响。
3.模拟滤波器的数字化
用内部函数impinvar及bilinear实现教材习题6-5,求数字滤波器H(z)的表达式。
四、思考题
1.对比实验内容1中滤波前后心电图信号x(n), y(n),说明滤波器的作用。
2.双线性变换与冲激不变法比较有何优缺点?
五、实验报告要求
1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明;
2.回答思考题;
3.总结实验体会及实验中存在的问题。
六、本实验所用的部分MATLAB函数
² L=length(x) :求序列x长度。
² y=fft(x,L) :将序列x(n)做L点快速傅立叶变换,结果赋给序列y(n)。
² [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s') :计算模拟Butterworth滤波器的最小阶次n和截止频率为Wn。其中Wp,Ws为模拟角频率,单位为rad/s,Rp,Rs的单位为dB。
² [b,a] = butter(n,Wn,'s'):设计模拟截止频率为Wn(rad/s)的n阶 Butterworth低通滤波器,返回值为模拟滤波器的系数。
² [n,Wn] = buttord(Wp,Ws,Rp,Rs) :计算数字Butterworth滤波器的最小阶次n和截止频率为Wn。其中Wp,Ws为数字角频率/pi,例如数字角频率为0.2pi,则赋值时为0.2。Rp,Rs的单位为dB。
² [b,a] = butter(n,Wn):设计数字截止频率为Wn的n阶 Butterworth低通滤波器,返回值为模拟滤波器的系数。
² y=filter(b,a,x): 将序列x(n) 通过滤波器滤波后生成序列y(n),滤波器的分母多项式系数构成a向量,分子多项式系数构成b向量。
² [bz,az] = impinvar(b,a, fs):冲激响应不变法,返回值为数字滤波器的系数bz、az。其中fs为抽样频率。
² [bz,az] = bilinear(b,a,fs) :双线性变换,返回值为数字滤波器的系数bz、az。其中fs为抽样频率。
² [H w]=freqz(b,a):由数字滤波器滤波器分母多项式系数构成的a向量和分子多项式系数构成的b向量求系统频响。
² [H w]=freqs(b,a):由模拟滤波器滤波器分母多项式系数构成的a向量和分子多项式系数构成的b向量求系统频响。
实验三 FIR数字滤波器设计
一、实验目的
1.熟悉线性相位FIR数字滤波器特性。
2.掌握用窗函数法设计FIR数字滤波器的原理和方法,理解各种窗函数对滤波性能的影响。
3.掌握用频率抽样法设计FIR数字滤波器的原理和方法,理解过渡带上抽样点数对滤波性能的影响。
二、实验仪器及材料
计算机,MATLAB软件
三、实验内容及方法
1.学习fir1例程,用窗函数法设计FIR数字滤波器
1)设计线性相位数字低通滤波器,要求通带截止频率,阻带截止频率,通带最大衰减,阻带最小衰减。设采样频率为,要求滤波器阶数尽量低。
选取合适的窗函数编程设计,求滤波器的单位脉冲响应h(n),并画出幅频特性和相频特性曲线。
2)设计线性相位数字带阻滤波器,要求阻带截止频率,,通带截止频率,通带最大衰减,阻带最小衰减。
选取合适的窗函数编程设计,求滤波器的单位脉冲响应h(n),并画出幅频特性和相频特性曲线。
2.学习fir2例程,用频率抽样法设计FIR数字滤波器,指标同实验内容1。
四、思考题
1.总结窗函数法中窗函数主要参数对滤波性能的影响。
2.频率抽样法设计FIR滤波器的优缺点是什么?
五、实验报告要求
1.列出本实验编写的所有文件及各项实验结果曲线,加注必要的说明;
2.对实验结果作理论计算,解释实验结果;
3.回答思考题;
4.总结实验体会及实验中存在的问题。
六、参考
fir1 implements the classical method of windowed linear-phase FIR digital filter design.
b = fir1(n,Wn)
b = fir1(n,Wn,'ftype')
b = fir1(n,Wn,window)
b = fir1(n,Wn,'ftype',window)
fir1例程
%Design a 48th-order FIR bandpass filter with passband 0.35 ≤ω≤ 0.65:
b = fir1(48,[0.35 0.65]);
freqz(b,1,512)
fir2例程
%Design a 30th-order lowpass filter and overplot the desired frequency response with
% the actual frequency response
f = [0 0.6 0.6 1]; m = [1 1 0 0];
b = fir2(30,f,m);
[h,w] = freqz(b,1,128);
plot(f,m,w/pi,abs(h))
legend('Ideal','fir2 Designed')
title('Comparison of Frequency Response Magnitudes')
第二篇:《数字信号处理上机指导》08级
《数字信号处理》
上机实验指导书
信息与通信工程系
通信工程专业
北京信息工程学院
20##年10月
目 录
实验一 离散傅里叶变换的性质及应用... 1
实验二 IIR数字滤波器设计... 4
实验三 FIR数字滤波器设计... 6
实验一 离散傅里叶变换的性质及应用
一、实验目的
1.了解DFT的性质及其应用
2.熟悉MATLAB编程特点
二、实验仪器及材料
计算机,MATLAB软件
三、实验内容及要求
1.用三种不同的DFT程序计算的256点离散傅里叶变换,并比较三种程序计算机运行时间。
(1)编制用for loop语句的M函数文件dft1.m,用循环变量逐点计算;
(2)编写用MATLAB矩阵运算的M函数文件dft2.m,完成下列矩阵运算:
(3)调用fft库函数,直接计算;
(4)分别调用上述三种不同方式编写的DFT程序计算序列的离散傅里叶变换,并画出相应的幅频和相频特性,再比较各个程序的计算机运行时间。
2.利用DFT实现两序列的卷积运算,并研究DFT点数与混叠的关系。
(1)已知两序列: ,用MATLAB生成随机输入信号x(n),n的取值为0~2;
(2)用直接法(即用线性卷积的定义计算,见下式)计算线性卷积y(n)=x(n)*h(n)的结果,并以图形方式表示结果;
其中:序列和序列
(3)用MATLAB编制利用DFT计算线性卷积y(n)=x(n)*h(n)的程序;分别令圆周卷积的点数为L=5,6,8,10,以图形方式表示结果。
(4)对比直接法和圆周卷积法所得的结果。
四、思考题
1. 直接计算N=256点的DFT与用FFT计算256点,理论上速度差别应有多少?
2. 说明为什么在实验内容2中L=6,8,10时采用FFT法对两序列计算圆周卷积的结果与线性卷积y(n)=x(n)*h(n)的结果相同,而与L=5时计算结果不同?
五、实验报告要求
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));
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,504)];
t = cputime;
[Am1,pha1] = dft1(x);
t1 = cputime-t;
5.本实验所用的部分MATLAB函数:
² x=rand(r,c) : 用MATLAB随机生成输入信号x(n),范围为0~1,r行,c列。
² y=conv(x1,x2): 将序列x1(n)与序列x2(n)做线性卷积,结果赋给序列y(n)。
² y=fft(x,L) : 将序列x(n)做L点快速傅立叶变换,结果赋给序列y(n)。
² y=ifft(x,L) : 将序列x(n)做L点快速傅立叶反变换,结果赋给序列y(n)。
² stem(x,y) : 以x为横坐标,y为纵坐标画离散曲线。
实验二 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)的表达式,画出滤波器的幅频响应曲线。
(3) 用所设计的滤波器对实际心电图信号采样序列进行滤波处理,编写程序,计算H(z)对心电图信号采样序列x(n)滤波后的序列y(n),并分别画出滤波前后的心电图信号波形图和频谱图。
2.用help查看内部函数cheb1ord.m及cheby1.m,了解调用格式,并用此函数设计一个数字切贝雪夫带通滤波器。
设计指标参数为:
抽样频率fs=2kHz;
在200Hz≤f≤400Hz时,最大衰减小于2dB;
在f≤100Hz,f≥600Hz,最小衰减大于40dB。
编程设计,求数字滤波器H(z)的表达式,画出滤波器的幅频响应曲线。
四、思考题
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向量。
实验三 FIR数字滤波器设计
一、实验目的
1.熟悉线性相位FIR数字滤波器特性。
2.掌握用窗函数法设计FIR数字滤波器的原理和方法,理解各种窗函数对滤波性能的影响。
3.掌握用频率抽样法设计FIR数字滤波器的原理和方法,理解过渡带上抽样点数对滤波性能的影响。
二、实验仪器及材料
计算机,MATLAB软件
三、实验内容及方法
1.用窗函数法设计FIR数字低通滤波器
FIR数字低通滤波器技术指标如下:
选取合适的窗函数编程设计,求滤波器的单位脉冲响应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) :返回值为频率响应
² abs(x): 对序列x(n)每一项取绝对值或模值;
² angle(x): 对序列x(n)每一项取相位;
² boxcar(N): 生成长度为N的矩形窗(矩形序列);
² triang(N): 生成长度为N的三角窗;
² hanning(N): 生成长度为N的汉宁窗;
² hamming(N): 生成长度为N的海明窗;
² blackman(N): 生成长度为N的布拉克曼窗。