数字信号处理实验指导.docx
《数字信号处理实验指导.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验指导.docx(51页珍藏版)》请在冰豆网上搜索。
数字信号处理实验指导
目录
实验一离散时间的信号和系统2
实验二离散时间傅立叶变换4
实验三离散傅立叶变换(DFT)7
实验四数字滤波器结构10
实验五IIR数字滤波器的设计13
实验六FIR滤波器的设计——窗函数法和频率抽样设计法18
实验七语音处理系统仿真(综合滤波器设计)22
附录自编函数23
实验一离散时间的信号和系统
一、实验目的
1、复习离散时间的信号和系统,复习离散时间重要类型的信号和它们的运算的实现。
2、复习离散时间信号理论中一些重要的结果,它们在数字信号处理中很有用。
二、实验原理
1、典型序列
单位采样序列;单位阶跃序列;实数指数序列;复数指数序列;
正余弦序列;随机序列:
MATLAB可用rand(1,N)和randn(1,N)来生成;周期序列。
2、序列的运算
信号加;信号乘;改变比例;移位;折叠:
fliplr(x);取样和:
sum(x(n1:
n2))
取样积:
prod(x(n1:
n2));信号能量:
sum(abs(x)^2);
信号功率:
sum(abs(x)^2)/length(x)
3、一些有用的结果
单位采样合成:
奇偶合成:
几何级数:
序列相关
:
卷积运算:
差分方程:
在Matlab中:
三、实验内容
1.典型序列的实现
单位阶跃序列;实数指数序列;复数指数序列;正余弦序列;随机序列用rand(1,N)和randn(1,N)来生成;
2.序列的运算
给定序列x1=[123456789],ns1=-4;x2=[987654321],ns2=4
求:
1)x1+x2;2)y3=x1×x2;
3)y1=0.5×x1+0.8×x2;
4)y2=0.3×x1(n)×δ(n-6)+0.8×δ(n-5)×x2(n);
5)x1和x2的反折序列;
6)x1(n)和x2(n)的功率;
7)y3=x1*x2(线性卷积);
四、本实验用到的一些MATLAB函数
Stem(x,y),Plot(x,y):
x轴和y轴均为线性刻度(Linearscale)
Xlable(‘x’),Ylable(‘y’)
Title(‘x’)
axis([xmin,xmax,ymin,ymax]):
调整图轴的范围
Subplot(x,y,z):
同时画出数个小图形在同一视窗中。
Real(x):
求复数x的实数部分;
Imag(x):
求复数x的虚数部分;
Abs(x):
求复数x的模;
Angle(x):
求复数x的相位;
Conv(x,y):
求x和y的卷积,注意下标是从1开始;
Fliplr(x):
信号反折;
Fliter(b,a,x):
差分方程的实现。
五、MATLAB编程和调试技巧
因为MATLAB语言是一种解释性语言,所以有时MATLAB程序的执行速度不是很理想。
因此尽量避免使用循环,用向量化的运算来代替循环操作。
注意;的使用。
如果有的同学对MATLAB的使用不熟悉,请在老师处考取语言学习PPT。
六、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验二离散时间傅立叶变换
一、实验目的
1.复习离散时间傅立叶正反变换
2.复习DTFT的两个重要特性
3.复习DTFT的其它特性
4.离散LTI系统的频率响应
5.采样及重构信号
二、实验原理
1、信号的离散时间傅立叶变换(DTFT)
2、DTFT的两个重要特性
周期性:
离散时间傅立叶变换是w的周期函数,其周期为2π。
对称性:
对于实值的X(n),是共扼对称的。
即实部为偶对称,虚部为奇对称。
3、DTFT的其他特性
线性;
时移、共扼、折叠、卷积、乘法、能量等;
4、LTI系统的频率响应
5、模拟信号的采样与重构
采样定理
重构:
步骤如下
(a)先把样本集转换成一个加权脉冲串列
(b)再将此脉冲串列通过一个带宽为F的低通滤波器进行滤波。
以上两个步骤可用插值公式来描述:
三、实验内容
1.求信号的离散时间傅立叶变换并分析其周期性和对称性;
给定正弦信号x(t)=2*cos(2*pi*10*t),fs=100HZ,求其DTFT。
2.用以下两个有限长序列来验证DTFT的线性、卷积和共轭特性;
x1(n)=[123456789101112];x2(n)=R10(n)
3.求LTI系统的频率响应
给定系统H(Z)=B(Z)/A(Z),A=[0.98777-0.311830.0256]
B=[0.989970.9890.98997],求系统的幅频响应和相频响应。
(要求使用filter(B,A,δ(n))求解。
4.采样和频谱混叠
给定信号x(t)=100*exp(-100*t)*cos(2*pi*500*t),求该信号的频谱;当采样频率分别为fs1=2000HZ,fs2=1000HZ;fs3=500HZ;
fs4=200HZ,时输出序列的DTFT。
四、本实验用到的函数
有限长序列的DTFT:
dtft(x,n,w)(该函数需自己编写)
算法:
用Matlab语言来实现:
function[y]=dtft(x,n,w)
y=x*(exp(-j).^(n'*w));
五、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验三离散傅立叶变换(DFT)
一、实验目的
1.掌握离散傅立叶级数(DFS)
2.掌握DFT变换
3.掌握DFT性质
4.掌握利用DFT计算线性卷积
5.掌握快速傅立叶变换(FFT)
二、实验原理
1、离散傅立叶级数
DFS
IDFS
2、离散傅立叶变换(DFT)
X(n)为有限长序列:
DFT:
IDFT:
3、DFT的性质
线性性
循环折叠性
共轭性
时序列的对称性
序列的圆周移位
频域中的圆周移位
时域循环卷积
频域循环卷积
帕赛瓦尔定理
4、用DFT计算线性卷积
1)设x1(n)为N1点的序列,x2(n)为N2点的序列,则线性卷积的长度为N1+N2-1,而当其两者的圆周卷积的长度取为N1+N2-1时,圆周卷积与线性卷积相等。
2)实际中,当x1(n)的长度远远大于和x2(n)的长度时,往往采用分块卷积的方法,即重叠保留法和重叠相加法。
5、快速傅立叶变换(FFT)
在MATLAB中提供fft函数来计算x的DFT。
X=fft(x,N);
三、实验内容
1.离散傅立叶级数
给定有限长序列[1234],延拓为周期N=6的周期序列,并求其DFS。
2.求以下序列的N=16,32,64点的快速傅立叶变换
x(n)=exp(-i*pi/8*n);x2(n)=cos(pi/8*n);x3(n)=sin(pi/8*n)
3.利用DFT计算线性卷积
给定序列x1(n)=0.9^n,n=[0:
11];h(n)=R9(n)求x1(n)*h(n);x1(n)与h(n)的10点圆周卷积。
四、本实验用到的一些函数
1.离散傅立叶级数:
Xk=dfs(xn,N)算法:
xn=idfs(Xk,N)
2.离散傅立叶变换:
Xk=dft(xn,N)
xn=idft(Xk,N)
3.序列的循环移位:
cirshftt(x,n,N)
4.序列的循环卷积:
circonvt(x1,x2,N)
5.分块卷积:
ovrlpsav(x,h,N)
6.快速傅立叶变换:
fft(x,N)
五、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验四数字滤波器结构
一、实验目的
1.掌握IIR滤波器的三种结构(直接形式、级联形式、并联形式)及其它们的互相转换。
2.掌握线性相位FIR滤波器的四种结构(横截形、级联形、线性相位形、频率抽样形)及其它们互相转换。
二、实验原理
1、IIR滤波器
IIR滤波器可以写成:
其差分方程可表示为:
直接形式:
可利用y=filter(B,A,x)直接实现。
级联形式:
并联形式:
2、FIR滤波器
FIR滤波器可表示为:
其差分方程为:
直接形式:
可用函数filter来实现。
级联形式:
线性相位形式:
线性相位的条件:
可表示为:
h(n)=h(M-1-n)偶对称
h(n)=-h(M-1-n)奇对称
频率取样形式:
冲激响应h(n)的M点DFT为H(k)则有:
H(z)=Z[h(n)]=Z[IDFT(H(k))]
利用内插公式可得:
三、实验内容
IIR滤波器
给定IIR滤波器
,求其典范型、级联型、并联型结构。
FIR滤波器
给定FIR滤波器
,求其级联型、频率抽样型结构。
四、本实验用到的一些函数
求多项式的根:
b=roots(a)
构造指定根的多项式:
a=poly(b)
部分分式展开:
[r1,p1,k]=residuez(b,a)
[b,a]=residuez(r1,p1,k)
对复数进行重新排序:
p1=cplxpair(p)
变直接形式为级联形式:
[b0,B,A]=dir2cas(b,a)
滤波器的级联实现:
y=casfiltr(b0,B,A,x)
变级联形式为直接形式:
[b,a]=cas2dir(b0,B,A)
变直接形式为并联形式:
[C,B,A]=dir2par(b,a)
滤波器的并联实现:
y=parfiltr(b0,B,A,x)
变并联形式为直接形式:
[b,a]=par2dir(C,B,A)
变h(n)值形式为频率取样形式:
[C,B,A]=dir2fs(h)
五、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验五IIR数字滤波器的设计
一、模拟滤波器的设计
设滤波器的通带截止频率为wp,阻带截止频率为ws,通带衰减为Rp,阻带衰减为As,通带波纹为Rp。
1、根据给定指标得出,利用函数buttord,cheb1ord,cheb2ord可以计算出低通模拟原型滤波器的阶数和截止频率。
[n,wn]=buttord(wp,ws,Rp,As,’s’)
[n,wn]=cheb1ord(wp,ws,Rp,As,’s’)
2、求出低通模拟原型滤波器后,再利用函数[z,p,k]=Buttap(n);[z,p,k]=Cheb1ap(n,Rp)求出零极点型系统函数,然后可用函数zp2tf-[bap,aap]=zp2tf(z,p,k)将其转化为b/a型
3、将模拟低通原型滤波器经频率变换为所要求的模拟滤波器(低通,高通,带通,带阻)可用函数lp2lp,lp2hp,lp2bs,lp2bp。
[b,a]=lp2lp(bap,aap,wo)
[b,a]=lp2bs(bap,aap,wo)
4、求出滤波器的幅频,相频及冲激响应。
[db,mag,pha,w]=freqs_m(b,a,Wmax)(见附录)
[ha,x,t]=impulse(b,a)(matlab自带)
直接画出幅频特性和相频特性:
freqs(b,a)(matlab自带)
例:
wp=0.2*pi;Rp=1;ws=0.3*pi;As=15;
[n,wn]=buttord(wp,ws,Rp,As,'s')
[z,p,k]=buttap(n);
[bap,aap]=zp2tf(z,p,k)
[b,a]=lp2lp(bap,aap,wn);
[db,mag,pha,w]=freqs_m(b,a,0.5*pi);
[ha,x,t]=impulse(b,a);
figure
(1)
subplot(2,2,1),plot(w/pi,mag);title('幅度');
subplot(2,2,2),plot(w/pi,db);title('幅度indb');
subplot(2,2,3),plot(w/pi,pha/pi);title('相位');
subplot(2,2,4),plot(t,ha),title('冲激响应');
figure
(2)
freqs(b,a);
二、数字滤波器的设计
设滤波器的通带截止频率为Wp,止带截止频率为Ws,通带衰减为Rp,止带衰减为As,通带波纹为Rp。
设计方法一:
1、根据给定指标得出,低通模拟原型滤波器的阶数和截止频率。
可利用函数buttord,cheb1ord,cheb2ord完成。
[n,wn]=buttord(Wp,Ws,Rp,As)
[n,wn]=cheb1ord(Wp,Ws,Rp,As)
2、直接求出数字滤波器,利用函数butter,cheby1,cheby2。
[b,a]=butter(n,Wn,’ftype’)
[b,a]=cheby1(n,Rp,Wn,’ftype’)
‘ftype’指的是:
’low’,’bandpass’,’high’,’stop’
3、求出滤波器的幅频,相频及群延时。
[db,mag,pha,grd,w]=freqz_m(b,a);(见附录)
直接画出幅频特性和相频特性:
freqz(b,a)(matlab自带)
例:
wp=0.2;Rp=1;ws=0.3;As=15;
[n,wn]=buttord(wp,ws,Rp,As)
[b,a]=butter(n,wn);
[db,mag,pha,grd,w]=freqz_m(b,a);
figure(3)
subplot(2,2,1),plot(w/pi,mag);title('幅度');
subplot(2,2,2),plot(w/pi,db);title('幅度indb');
subplot(2,2,3),plot(w/pi,pha/pi);title('相位');
subplot(2,2,4),plot(w/pi,grd),title('群延时');
figure(4);freqz(b,a)
设计方法二:
1.冲激响应不变法
使用冲激响应法来实现由模拟滤波器滤波器转变为数字滤波器。
利用所编写的函数实现:
[b,a]=imp_invr(c,d,T)
[b,a]=impinvar(cs,ds,T)(Matlab自带)
2、双线性变换法
利用双线性法来实现模拟滤波器到数字滤波器的转换。
[b,a]=bilinear(cs,ds,T)(Matlab自带)
三、设计要求
1、设计低通模拟滤波器,具体要求如下:
3db带宽10KHZ,阻带起始频率12KHZ,阻带应达到的最小衰减-30db
方法一:
采用Matlab自带函数来实现。
方法二:
采用自编函数实现。
[c,d]=afd_butt(wp,ws,Rp,As)
[c,d]=afd_cheb1(wp,ws,Rp,As)
2、设计数字滤波器
(1)带通滤波器:
通带范围:
100HZ---200HZ;阻带范围:
截止频率60HZ;240HZ,通带允许最大衰减3dB,阻带应达到的最小衰减-30dB
(2)低通滤波器wp=pi/3,ws=pi/2通带允许最大衰减3dB,阻带应达到的最小衰减-30dB。
(3)阻带范围:
100HZ---200HZ通带截止频率60HZ和240HZ。
通带允许最大衰减3dB,阻带应达到的最小衰减-30dB
四、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验六FIR滤波器的设计——窗函数法和频率抽样设计法
求四种线性相位FIR滤波器的振幅响应函数(见附录)
[hr,w,a,L]=hr_type1(h);h偶对称,N为奇数,h(n)=h(N-1-n)
[hr,w,a,L]=hr_type2(h);h偶对称,N为偶数,h(n)=h(N-1-n)
[hr,w,a,L]=hr_type3(h);h奇对称,N为奇数,h(n)=-h(N-1-n)
[hr,w,a,L]=hr_type4(h);h奇对称,N为偶数,h(n)=-h(N-1-n)
一、窗函数设计法原理
窗函数法是从时域出发,把理想的hd(n)用一定形状的窗函数截取成有限长的h(n),以此来近似理想的hd(n),这样得到的频率响应H(ejw)逼进于所要求的理想频率响应。
(1)先给定所要求设计的理想滤波器的频率响应Hd(ejw).
(2)由于hd(n)是无限长的,而我们必须用有限长的h(n)来逼近hd(n),最有效的方法就是截断hd(n)。
h(n)=w(n)*hd(n)
二、窗函数设计法
设计方法一
1、根据实际阻带衰减指标,来确定所使用的窗函数。
Matlab提供了几个函数来实现这些窗函数。
W=boxcar(N);矩形窗-21dB
W=triang(N);三角窗-25dB
W=hanning(N);汉宁窗-44dB
W=hamming(N);海明窗-53dB
W=blackman(N);布莱克曼窗-74dB
W=kaiser(N,beta);凯泽窗(beta=0.7865)-80dB
2、根据过渡带来计算出N值。
例:
通带截止频率wp,阻带截止频率ws,已知为汉宁窗:
N=3.1*2*pi/(wp-ws);
3、求出理想的hd(n)。
可使用ideal_lp来实现理想低通滤波器的冲激响应。
例:
由ideal_lp来实现理想带阻滤波器的冲激响应。
hd=ideal_lp(wc1,N)+ideal_lp(pi,N)-ideal_lp(wc2,N);
3、求得所设计的FIR滤波器的单位抽样响应:
h=hd.*w
例1
ws1=0.2*pi;wp1=0.35*pi;
wp2=0.65*pi;ws2=0.8*pi;
wd=min((wp1-ws1),(ws2-wp2));
wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;
w_bla=(blackman(N+1))';
N=ceil(11*pi/wd);
hd=ideal_lp(wc2,N+1)-ideal_lp(wc1,N+1);
h=hd.*w_bla;
设计方法二
1、根据实际阻带衰减指标,来确定所使用的窗函数。
2、根据过渡带来计算出N值。
3、利用Matlab所提供的函数fir1,来实现fir滤波器。
h=fir1(N,wn,’ftype’,windows(N+1)),对于高通滤波器和带阻滤波器,N必须为偶数,‘ftype’指的、是:
‘low’,’bandpass’,‘high’,’stop’
例2设计理想带通滤波器:
ws1=0.2*pi;wp1=0.35*pi;wp2=0.65*pi;ws2=0.8*pi;
wd=min((wp1-ws1),(ws2-wp2));
wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;
N=ceil(11*pi/wd);
wn=[wc1,wc2]/pi;
b=fir1(N,wn,blackman(N+1));
freqz(b,1)
三、频率抽样设计法
频率抽样法从频域出发把给定的理想频率响应Hd(ejw)加以等间隔抽样,然后以此Hd(k)作为实际FIR滤波器的频率特性的抽样值H(k),知道H(k)后,由DFT定义,可用频域的这N个抽样值H(k)求唯一确定的有限长序列h(n),利用这N个频域抽样值H(k)同样可得FIR滤波器的系统函数H(Z)及频率响应。
1、根据给定的N值和过渡点来求得Hd(k)。
例3
N=40;T1=0.5925;T2=0.1099;
ws1=0.2*pi;wp1=0.35*pi;ws2=0.8*pi;wp2=0.65*pi;
alpha=(N-1)/2;
L=0:
N-1;wl=(2*pi/N)*L;
hrs=[zeros(1,5),T2,T1,ones(1,7),T1,T2,zeros(1,9),T2,T1,ones(1,7),T1,T2,zeros(1,4)];
k1=[0:
floor((N-1)/2)];
k2=floor((N-1)/2)+1:
N-1;
angh=[-alpha*(2*pi)/N*k1,alpha*(2*pi)/N*(N-k2)];
H=hrs.*exp(j*angh);
2、利用DFT反变换求的所需的h(n)。
h=real(ifft(H,N));
四、设计任务
完成例1-例3程序的调试,并分析原理。
五、实验报告的要求
实验目的;
实验原理;
实验内容:
要求有程序,有图形(坐标要标识清楚)。
实验结论。
实验七语音处理系统仿真(综合滤波器设计)
一、实验目的:
通过本实验,使学生加深对数字信号处理系统结构的理解,通过不同采样频率对输出频谱和重构信号的影响,加深学生对采样定理的认识。
通过不同类型滤波器的设计得到不同的输出频谱变化和语音处理效果,使学生进一步了解FIR和IIR滤波器的特性,通过本实验,使学生掌握基本的时域、频域信号处理方法,同时提高学生综合应用所学理论知识分析问题解决问题的能力。
二、实验要求:
1)掌握采样定理、FFT、滤波器设计原理及数字信号处理系统的结构。
2)熟悉常用数字信号处理中的MATLAB函数。
3)设计系统框图,对各个模块的输出输入的时域和频域图形进行记录。
4)进行数据分析,完成实验报告。
三、实验内容:
(1)信号预处理与采样:
通过MATLAB函数读取一段语音信号,通过不同模拟滤波器的设计完成抗混叠滤波,通过设置不同的采样频率实现采样。
(2)均衡处理(综合滤波器设计)
通过设计FIR、IIR低通、带通、高通滤波器实现信号在低、中、高频段的均衡。
四、实验方案(任务):
任务1:
用声音编辑工具软件录制Wav文件,获取处理语音信号。
任务2:
抗混叠滤波器设计(IIR,fc=10KHZ)。
任务3:
信号的采样(fs=5KHZ,10KHZ,20KHZ,40KHZ),并观测频谱混叠现象。
任务4:
设计均衡滤波器(低通---5KHZ,高通----5KHZ,带通---1KHZ—8KHZ)
五、实验仪器设备:
MATLAB常用函数
附录自编函数
function[b,a]=afd_butt(Wp,Ws,Rp,As);
%AnalogLowpassFilterDesign:
Butterworth
%-----------------------------------------
%[b,a]=afd_butt(Wp,Ws,Rp,As);
%b=NumeratorcoefficientsofHa(s)
%a=DenominatorcoefficientsofHa(s)
%Wp=Passbandedgefrequencyinrad/sec;Wp>0
%Ws=Stopbandedgefrequencyinrad/sec;Ws>Wp>0
%Rp=Passbandripplein+dB;(Rp>0)
%