数字信号处理报告.docx
《数字信号处理报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理报告.docx(19页珍藏版)》请在冰豆网上搜索。
数字信号处理报告
数字信号处理实验报告
实验目的
一、加深对离散傅立叶变换(DFT)和快速傅立叶变换(FFT)的理解,掌握通过两种变换求卷积的编程方法;
二、掌握设计巴特沃斯低通双线性IIR数字滤波器的原理和方法,以及从低通转换到高通的技术;
三、掌握用窗函数设计FIR数字滤波器的原理及方法,了解各种不同窗函数对滤波器性能的影响;
四、提高综合应用和分析的能力,Matlab编程能力等。
实验内容
实验一
一、实验名称
快速傅立叶变换
二、实验要求
编程利用FFT进行卷积计算,通过实验比较出快速卷积优越性。
三、实验原理
利用FFT进行离散卷积的步骤归纳如下:
(1)、设x(n)的列长为N1,h(n)的列长为N2,要求
y(n)=x(n)*h(n)=
x(k)h((n-k))NRN(n)=
[1]
(2)、为使两有限长序列的线性卷积可用其圆周卷积来代替而不产生混淆,必须选择N≥N1+N2-1。
为使用基-2FFT来完成卷积计算,故要求N=2v(v是整数)。
用补零的办法使x(n),h(n)具有列长N,即
x(n)=
h(n)=
(3)为用圆周卷积定理计算线性卷积,先用FFT计算x(n),h(n)的N点离散傅立叶变换
x(n)
X(k)[2]
h(n)
H(k)[3]
(4)组成卷积
Y(k)=X(k)H(k)[4]
(5)利用IFFT计算Y(k)的离散傅立叶逆变换得到线性卷积y(n)。
由于
y(n)=
WN-nk=[
WNnk]*[5]
可见,y(n)可由求(1/N)Y*(k)的FFT再取共轭得到。
四、实验题目
(1)两个正弦序列的卷积(均为两个周期,256点)
输入序列:
卷积输出:
(2)正弦序列与三角序列的卷积(正弦序列为两个周期,256点;三角序列为一个周期,256个点)
输入序列:
卷积输出:
(3)两个矩形序列的卷积(均为两个周期,256个点,占空比0.5)
输入序列:
卷积输出:
(4)单位冲击与正弦波(单位冲击序列为256个点,正弦序列为1.7个周期,256个点)
输入序列:
卷积输出:
任何序列与单位冲击序列的卷积为原序列,所以结果正确。
(5)正弦序列与矩形序列的卷积(两序列均为256个点,正弦序列为两个周期,矩形序列为两个周期,占空比为0.2)
输入序列:
卷积输出:
主要代码(只选一个参考,下同):
%
(1)的代码
k=1:
256;
s1=sin(k/64*pi);
s2=s1;
xk=fft(s1,2*length(k)-1);
yk=fft(s2,2*length(k)-1);
rm=ifft(xk.*yk);
m=(-255):
(255);
stem(m,rm)
xlabel('m');ylabel('·ù¶È');
实验二
一、实验名称
IIR数字滤波器
二、实验要求:
设计巴特沃斯低通双线性IIR数字滤波器,N=3,ωc=0.2π。
输入信号为以下三种序列(选择点数为128或256):
1.单位取样
2.三角序列(两个周期)
3.矩形序列(占空比0.1或0.5)
给出输出的时域及频域效果,并进行简单的分析。
三、实验原理:
滤波器的作用是滤除信号中某一部分的频率分量。
信号经过滤波器处理,就相当与信号频谱与滤波器的频率响应相乘的结果。
在时域里来看,这就是信号与滤波器的冲激响应相卷积。
可以说滤波器就是一个卷积器。
IIR滤波器的系统函数
对应的差分方程为
模拟滤波器系统函数
的一般表示式为
数字滤波器系统函数H(z)的普遍表示式为
三阶次巴特沃斯滤波器的系统函数为
由Ha(s)的系数表示经双极性变换后的Y(z)的表达式(三阶)ωc=0.2π
Y(Z)=0.018099*X(Z)*Z-3+0.054297*X(Z)*Z-2+0.054297*X(Z)*Z-1+0.018099*X(Z)
+0.27806*Y(Z)*Z-3-1.18289*Y(Z)*Z-2+1.76004*Y(Z)*Z-1
即
y(n)=0.018099*x(n-3)+0.054297*x(n-2)+0.054297*x(n-1)+0.018099*x(n)
+0.27806*y(n-3)-1.18289*y(n-2)+1.76004*y(n-1)
由低通数字滤波器原形变换为高通数字滤波器
由截止频率ωc=0.2π三阶低通变换为截止频率ωc=0.6π三阶高通,经计算,其表达式为:
y(n)=-0.098531x(n-3)+0.295594x(n-2)-0.295594x(n-1)+0.098531x(n)
-0.056297y(n-3)-0.42179y(n-2)-0.57724y(n-1)
计算过程:
由给定的条件可计算出巴特沃斯系统函数的系数,相应可知摸拟系统函数的系数,经双极性变换法求出数字滤波器的系数,最后由差分方程实现低通滤波效果。
经相应的Z平面映射,由映射公式变换得出数字高通滤波器系统函数的系数,从而由差分方程实现高通效果。
四、实验结果及分析:
A.低通滤波:
(1).单位取样(256个点)
输入序列:
低通滤波后的傅立叶变换和输出序列:
(2).三角序列(256个点,两个周期)
输入序列:
低通滤波后的频谱和输出序列:
(3).矩形序列(两个周期,256个点,占空比0.5)
输入序列:
低通滤波后的频谱和输出序列:
主要代码:
%y=[ones(1,64)-ones(1,64)ones(1,64)-ones(1,64)];
%y=[1zeros(1,255)];
y=[1:
3231:
-1:
-32-31:
3231:
-1:
-32-31:
0]./32;
k=2*length(y);
[B,A]=butter(3,0.2*pi);
[num1,den1]=impinvar(B,A);
[h1,w]=freqz(num1,den1);
[HH,TT]=impz(B,A);
YY1=conv(HH,y);
%YY=filter(B,A,y);
f=fft(y,k);
FF1=fft(YY1,k);
subplot(2,2,2);
stem(YY1(1:
length(y)),'.');title('TheresultofFilter');
subplot(2,2,1);
stem(y,'.');title('Thesignalofy');
subplot(2,2,3);
plot(w,abs(f));
subplot(2,2,4);
plot(w,abs(FF1));
B.高通滤波:
(1)矩形序列(256个点,两个周期,占空比0.5)
输入序列:
高通滤波输出的频谱:
高通滤波输出:
(2)矩形序列(256个点,两个周期,占空比0.1)
输入序列:
高通滤波输出的频谱和高通滤波输出:
主要代码:
y=[ones(1,13)-ones(1,115)ones(1,13)-ones(1,115)];
k=2*length(y);
[B,A]=butter(3,0.2*pi,'high');
[num1,den1]=impinvar(B,A);
[h1,w]=freqz(num1,den1);
[HH,TT]=impz(B,A,'high');
YY1=conv(HH,y);
%YY=filter(B,A,y);
f=fft(y,k);
FF1=fft(YY1,k);
subplot(2,2,2);
stem(YY1(1:
length(y)),'.');title('TheresultofFilter');
subplot(2,2,1);
stem(y,'.');title('Thesignalofy');
subplot(2,2,3);
plot(w,abs(f));
subplot(2,2,4);
plot(w,abs(FF1));
实验三
一、实验名称
FIR数字滤波器
二、实验要求:
设计一个截止频率为ωc=0.2π的线性相位低通数字滤波器,ω1=0.3π,ω2=0.3π的线性相位带通滤波器,分别用矩形窗和海明窗对其进行截断,N为61。
输入序列64-128点,输出128-256点。
输入单位取样及矩形序列(占空比0.1),画出输出序列及其频谱。
三、实验原理:
理想低通数字滤波器,其频率特性为Hd(ejω),现假设其幅频特性|Hd(ejω)|=1,相频特性φ(ω)=0,那么,该滤波器的单位抽样响应hd(n)是以为hd(0)为对称的sinc函数,hd(0)=ωc/π。
我们将hd(n)截短,例如仅取hd(-M/2),…,hd(0),…,hd(M/2),并将截短后的hd(n)移位,得
h(n)=hd(n-M/2) n=0,1,…,M
那么h(n)是因果的,且为有限长,长度为M+1,令
H(z)=∑h(n)Z-n n=0,1,…,M
即得到所设计滤波器的转移函数。
H(z)的频率响应将近似Hd(ejω),且是线形相位的。
窗函数设计法是一种逼近,用其频响H(ejw)去逼近所要求的理想滤波器频响Hd(ejw),用其有限长单位冲击响应h(n)去逼近理想滤波器的无限长单位冲击响应hd(n),即:
设计FIRDF的关键是求出h(n),它应该是一个有限长因果序列。
有限性可通过对hd(n)截取一段,即与某一窗函数相乘获得;因果性可通过在时域上进行
的时延来获得,这不影响幅频特性,只影响相频。
常用的窗函数有矩形窗、海明窗等。
设计时,先根据
算出hd(n),再根据指定的窗函数点数以及窗的类型得出h(n),对输入的待滤波序列和h(n)做卷积,即可达到滤波效果。
具体实现时可根据线形卷积和圆周卷积的关系,通过补点把线形卷积化为圆周卷积,再根据离散时域的卷积定理,借助FFT求出两序列的频谱,对其频域的乘积做IFFT,即得到时域的圆周卷积。
理想低通滤波器幅频特性
可知:
同理:
带通滤波器的单位冲击响应为:
h(n)=(Sinω2n-Sinω1n)/(πn)
所以:
四、实验结果及分析:
以下各图输入序列均为128个点,输出序列均为256个点,滤波器窗函数取样点的数目N均为61。
低通滤波
(1)单位冲击序列输入:
主要代码:
n=0:
127;N=30;x
(1)=1;x(2:
128)=0;
h=sin(0.2*pi*(n-30))./(pi*(n-30+eps));y=conv(x,h);Y=abs(fft(y));
subplot(3,1,1);stem(n,x);xlabel('n');ylabel('x(n)');title('输入序列');
subplot(3,1,2);stem(0:
254,Y);xlabel('n');ylabel('幅度/dB');title('加矩形窗低通滤波后频谱');
subplot(3,1,3);stem(0:
254,y);xlabel('n');ylabel('y(n)');title('加矩形窗低通滤波后输出序列');
hd=sin(0.2*pi*(n-30))./(pi*(n-30+eps));
w=0.5-0.5*cos(2*pi*n/128);h=hd.*w;y=conv(x,h);Y=abs(fft(y));
subplot(3,1,1);stem(n,x);xlabel('n');ylabel('x(n)');title('输入序列');
subplot(3,1,2);stem(0:
254,Y);xlabel('n');ylabel('幅度/dB');title('加海明窗低通滤波后频谱');
subplot(3,1,3);stem(0:
254,y);xlabel('n');ylabel('y(n)');title('加海明窗低通滤波后输出序列');
n=0:
127;h=sin(0.2*pi*(n-30))./(pi*(n-30+eps));[h1,w1]=freqz(h,1);subplot(2,1,1);
plot(w1/pi,20*log10(abs(h1)));
xlabel('归一化频率/');ylabel('幅度/dB');title('加矩形窗后响应')
d=sin(0.2*pi*(n-30))./(pi*(n-30+eps));
w=0.5-0.5*cos(2*pi*n/128);h=d.*w;
[h1,w1]=freqz(h,1);subplot(2,1,2);plot(w1/pi,20*log10(abs(h1)));
xlabel('归一化频率/');ylabel('幅度/dB');title('加海明窗后响应');
(2)矩形序列输入(占空比0.5):
主要代码:
n=0:
127;N=30;x=[ones(1,32)-ones(1,32),ones(1,32)-ones(1,32)];
h=sin(0.2*pi*(n-N))./(pi*(n-N+eps));y=conv(x,h);Y=abs(fft(y));
subplot(3,1,1);stem(n,x);xlabel('n');ylabel('x(n)');title('输入序列');
subplot(3,1,2);stem(0:
254,Y);xlabel('n');ylabel('幅度/dB');title('加矩形窗低通滤波后频谱');
subplot(3,1,3);stem(0:
254,y);xlabel('n');ylabel('y(n)');title('加矩形窗低通滤波后输出序列');
hd=sin(0.2*pi*(n-30))./(pi*(n-30+eps));
w=0.5-0.5*cos(2*pi*n/128);h=hd.*w;y=conv(x,h);Y=abs(fft(y));
subplot(3,1,1);stem(n,x);xlabel('n');ylabel('x(n)');title('输入序列');
subplot(3,1,2);stem(0:
254,Y);xlabel('n');ylabel('幅度/dB');title('加海明窗低通滤波后频谱');
subplot(3,1,3);stem(0:
254,y);xlabel('n');ylabel('y(n)');title('加海明窗低通滤波后输出序列');
分析:
可以看见相同的信号经过矩形窗与海宁窗后的效果有一定的区别,因为海宁窗可以得到旁瓣更小的效果,使能量能够更加集中于窗谱的主瓣内,增大了阻带衰减,可以使设计的信号更加接近模拟信号。
实验心得
通过该实验,我深刻了解了各种类型的序列表示,无论是正弦序列,矩形序列,三角序列都已经有了较为明确的概念了解。
同时,我们对序列进行巴特沃斯低通双线性IIR数字滤波器,最终得到了卷积的图样。
除此之外,我们再次温习了MATLAB,并且对其中的傅里叶变换函数有了进一步的了解。
在此次试验中,我遇到了许多困难,由于对MATLAB的不熟悉,最初的导入函数总是出错,最后,在同学的指导下,终于完成了工作。