当前位置:文档之家› 数字信号处理实验指导书

数字信号处理实验指导书

《数字信号处理》—实验指导数字信号处理课程组电子与信息工程学院班级:姓名:学号:综合评定:成绩:指导教师签字:实验一 典型离散信号及其MATLAB 实现一、实验目的1. 掌握MATLAB 语言的基本操作,学习基本的编程功能。

2. 掌握MATLAB 产生常用离散时间信号的编程方法。

3. 掌握MATLAB 计算卷积的方法。

二、实验原理(一)MATLAB 常用离散时间信号1. 单位抽样序列:⎩⎨⎧=01)(n δ 00≠=n n在MATLAB 中可以利用zeros()函数实现。

;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ 0≠=n kn2.单位阶跃序列:⎩⎨⎧01)(n u<≥n n 在MATLAB 中可以利用ones()函数实现。

);,1(N ones x =3.正弦序列:)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中:)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列:n j e n x ϖ=)(在MATLAB 中:)**ex p(1:0n w j x N n =-=5.指数序列:na n x =)(在MATLAB 中:na x N n .^1:0=-=6.y=fliplr(x)——信号的翻转; y=square(x)——产生方波信号y=sawtooth(x)——产生锯齿波信号; y=sinc(x)——产生sinc 函数信号。

(二)离散时间信号的卷积由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。

离散时间信号的卷积定义为∑∞-∞=-==m m n h m x n h n x n y )()()(*)()(可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。

MATLAB 求离散时间信号卷积和的命令为conv ,其语句格式为y=conv(x,h)其中,x 与h 表示离散时间信号值的向量;y 为卷积结果。

用MA TLAB 进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。

三、实验内容(一) 离散信号的产生离散信号的图形显示使用stem 指令。

编写MATLAB 程序,产生下列典型脉冲序列。

(1) 单位脉冲序列:起点n0,终点nf ,在ns 处有一单位脉冲。

(2) 单位阶跃序列:起点n0,终点nf ,在ns 前为0,在ns 处及以后均为1(n0<=ns<=nf)。

n0=0;nf=10;ns=3;n2=n0:nf;x2=[(n2-ns)>=0]; %单位阶跃序列(3) 实指数序列:nx )75.0(3= (4) 复指数序列:n j e x )7.02.0(4+-=程序:n0=0;nf=10;ns=3;n1=n0:nf;x1=(n1-ns)==0; %单位脉冲序列 n2=n0:nf;x2=(n2-ns)>=0; %单位阶跃序列n3=n0:nf;x3=(0.75).^n3; %实指数序列n4=n0:nf;x4=exp((-0.2+0.7j)*n4); %复指数冲序列subplot(2,2,1),stem(n1,x1);subplot(2,2,2),stem(n2,x2);subplot(2,2,3),stem(n3,x3);figuresubplot(2,2,1),stem(n4,real(x4)); %注意subplot的变化subplot(2,2,2),stem(n4,imag(x4));subplot(2,2,3),stem(n4,abs(x4));subplot(2,2,4),stem(n4,angle(x4));(二)离散时间信号的卷积用MATLAB编写卷积运算函数。

function [y,ny]=conv_improve(x,nx,h,nh)%[x,nx]为第一个信号%[h,nh]为第二个信号%conv(x,h)可以实现两个有限长度序列的卷积ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h));ny=[ny1:ny2];y=conv(x,h);在命令窗口调用卷积函数。

x=[3 4 0 -2 2 3 5]; nx=[-3:3]; h=[1 4 5 6 0 1]; nh=[N:N+5];N是你的学号最后两位,带入后求结果。

结果为:y =3 16 31 36 184 19 47 41 32 3 5ny =61 62 63 64 65 66 67 68 69 70 71 72四、实验分析观察实验结果,掌握、分析典型的离散时间信号,分析卷积运算。

五、实验总结总结实验认识、过程、效果、问题、收获、体会、意见和建议。

实验二离散时间信号和离散时间系统一、实验目的1.掌握计算线性时不变系统的冲激响应的方法。

2.理解时域采样的概念及方法。

3.掌握离散时间信号的z变换和z逆变换分析4.了解离散时间傅里叶变换(DTFT)二、实验原理(一)信号采样采样就是利用周期性抽样脉冲序列p T(t),从连续信号x a(t)中抽取一系列的离散值,得到抽样信号(或称抽样数据信号)即离散时间信号。

(二)线性时不变离散时间系统线性系统:满足线性叠加原理的系统。

若y1(n)和y2(n)分别是输入序列x1(n)和x2(n)的响应,则输入x(n)=ax1(n)+bx2(n)的输出响应为y(n)=ay1(n)+by2(n)。

时不变系统:即系统参数不随时间变化的系统,亦即系统对于输入信号的响应与信号加于系统的时间无关。

即满足:若y(n)是x(n)的响应,则y(n-m)是输入x(n-m)的响应,其中m是任意整数。

数字滤波器对单位样本序列()nδ的响应称为冲激响应,用h(n)表示。

线性时不变离散系统对输入信号x(n)的响应y(n)可用h(n)来表示:∑∞-∞=-=kknxkhny)()()(。

(三)z 变换和逆z 变换序列()n x 的z 变换定义为:()()∑∞-∞=-=n nzn x z X其中,z 是复变量。

相应地,单边z 变换定义为:()()∑∞=-=0n n z n x z XMATLAB 提供了计算离散时间信号单边z 变换的函数ztrans 和z 反变换函数iztrans : Z=ztrans(x),x=iztrans(z)。

上式中的x 和Z 分别为时域表达式和z 域表达式的符号表示,可通过sym 函数来定义。

如果信号的z 域表示式)(z X 是有理函数,进行z 反变换的另一个方法是对)(z X 进行部分分式展开,然后求各简单分式的z 反变换。

设)(z X 的有理分式表示为)()(1)(221122110z A z B za z a z a zb z b z b b z X nn m m =++++++++=------ΛΛ (4-3) MATLAB 信号处理工具箱提供了一个对)(z X 进行部分分式展开的函数residuez ,其语句格式为[R,P,K]=residuez(B,A)其中,B ,A 分别表示X(z)的分子与分母多项式的系数向量;R 为部分分式的系数向量;P 为极点向量;K 为多项式的系数。

若X(z)为有理真分式,则K 为零。

三、实验内容(一)线性时不变系统的冲激响应的计算设系统为y(n)-0.5y(n-1)+0.75y(n-2)=2.5x(n)+2.5x(n-1)+2x(n-2),计算上述系统的冲激响应。

N=40;num=[2.5 2.5 2]; den=[1 -0.5 0.75]; y=impz(num,den,N); %画出冲激响应stem(y);xlabel('时间序号n'); ylabel('振幅');title('冲激响应'); grid;(二)时域采样对连续正弦时间信号x(t)=cos(2πft)进行采样,其中f=13。

t=0:0.0005:1;f=13;xa=cos(2*pi*f*t);subplot(2,1,1)plot(t,xa);gridxlabel('时间,msec'); ylabel('振幅');title('连续时间信号');axis([0 1 -1.2 1.2])subplot(2,1,2);T=0.1;n=0:T:1;xs=cos(2*pi*f*n); k=0:length(n)-1; stem(k,xs);gridxlabel('时间序号n'); ylabel('振幅'); title('离散时间信号'); axis([0 length(n)-1 -1.2 1.2])(三)z 变换和z 反变换1.用ztrans 函数求函数)()cos()(n u n a n x nπ=的z 变换。

x=sym('a^n*cos(pi*n)'); Z1=ztrans(x); Z=simplify(Z1); Z =z/(z+a)2.用iztrans 函数求函数32)2)(1()12112()(--+-=z z z z z z X 的z 反变换。

Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'); x=iztrans(Z); simplify(x)ans =3*2^n-1/4*2^n*n-1/4*2^n*n^2-3四、实验分析1.观察实验结果,分析系统的线性、时不变性,求出系统的冲激响应。

2.对正弦信号进行采样。

3.求出程序(三)中的(三)z 变换和z 反变换表达式。

4.观察程序(四)离散时间信号的傅里叶变换的结果并分析。

五、实验总结总结实验认识、过程、效果、问题、收获、体会、意见和建议。

实验三 离散傅里叶变换(DFT )及其快速算法(FFT)一、实验目的1.理解DFT 算法,并能用MATLAB 实现DFT 。

2. 加深对FFT 的理解,体会DFT 和FFT 之间的关系。

3.熟悉应用FFT 实现两个序列的线性卷积的方法。

二、实验原理N 点序列x(n) 的DFT 和IDFT 定义:若将DFT 变换的定义写成矩阵形式,则得到 X=A ﹒x ,其中DFT 变换矩阵A 为⎪⎪⎭⎪⎪⎬⎫⎪⎪⎩⎪⎪⎨⎧=---2)1(111...1...............11...11N N N N N N N W W W W A可以用函数U=fft(u,N)和u=ifft(U,N)计算N 点序列的DFT 正、反变换。

三、实验内容(一)离散傅里叶变换(DFT )1.用MATLAB 求N=16的有限序列)4/sin()8/sin()(ππn n n x +=的DFT 结果,并画出结果图。

相关主题