DSP实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一离散系统的时域分析一、实验目的1、掌握离散时间信号的MATLAB表示;2、信号运算;3、差分方程的求解;4、离散时间信号的卷积运算。二、实验原理1、离散时间信号离散时间信号只在某些离散的瞬时给出函数值,而在其他时刻无定义。它是时间上不连续按一定先后次序排列的一组数的集合,称为时间序列,用x(n)表示,n取整数代表时间的离散时刻。在matlab中用向量来表示一个有限长度的序列。2、序列的类型为了分析的方便,在数字信号处理中规定了一些基本的序列。a)单位采样序列function[x,n]=impseq(n1,n2,n0)n=[n1:n2];x=[(n-n0)==0];调用该函数[x,n]=impseq(-2,8,2);stem(n,x)00010()001()0nnnnnnnnn单位采样序列的另一种生成方法n0=-2;n=[-10:10];nc=length(n);x=zeros(1,nc);fori=1:ncifn(i)==n0x(i)=1endendstem(n,x)b)单位阶跃序列function[x,n]=stepseq(n1,n2,n0)n=[n1:n2];x=[(n-n0)=0];调用该函数[x,n]=stepseq(-2,8,2);stem(n,x)00010()001()0nnnnnnnnnc)实数指数序列x(n)=an(运算符“.^”)n=[0:10];x=0.9.^n;stem(n,x)d)复数指数序列n=[-10:10];alpha=-0.1+0.3*j;x=exp(alpha*n);real_x=real(x);image_x=imag(x);mag_x=abs(x);phase_x=angle(x);subplot(2,2,1);stem(n,real_x)subplot(2,2,2);stem(n,image_x)subplot(2,2,3);stem(n,mag_x)subplot(2,2,4);stem(n,phase_x)()()jnxne(0.1j0.3)nx(n)e(10n10)e)正弦和余弦序列n=[0:10];x=3*cos(0.1*pi*n+pi/3);stem(n,x)f)随机序列rand(1,N)产生其元素在[0,1]之间均匀分布长度为N的随机序列。randn(1,N)产生均值为0,方差为1,长度为N的高斯随机序列。3、信号运算a)信号时移b)信号倒置c)信号加d)信号乘e)信号微分f)信号积分等0()sin()xnn0()cos()xnn4、序列运算在matlab中进行序列运算要求参与运算的序列的长度要一样,如果出现长度不一样或者长度相同但采样位置不同时,不能直接利用加减运算符,利用matlab中的下标运算使其具有相同的长度。function[y,n]=sigadd(x1,n1,x2,n2)n=min(min(n1),min(n2)):max(max(n1),max(n2));y1=zeros(1,length(n));y2=y1;y1(find((n=min(n1))&(n=max(n1))==1))=x1;y2(find((n=min(n2))&(n=max(n2))==1))=x2;y=y1+y2;移位function[y,n]=sigshift(x,m,n0)n=m+n0;y=x;例:求出下列波形x1(n)=2x(n-5)-3x(n+4)n=[-2:10];x=[1:7,6:-1:1];[x11,n11]=sigshift(x,n,5);[x12,n12]=sigshift(x,n,-4);[x1,n1]=sigadd(2*x11,n11,-3*x12,n12);stem(n1,x1)5、差分方程在《信号与系统》和《数字信号处理》课程中,我们知道描述线性移不变离散时间系统的数学模型是常系数差分方程,它与系统的结构流图之间可以互相推导。迭代解法(也称递推解法)是求解差分方程的最简单也最适用的方法,也是实现数字滤波器的一种基本方法。差分方程通式为:(){1,2,3,4,5,6,7,6,5,4,3,2,1}xn00[]()[]()NNkrakynkbrxnrx(n)与y(n)分别为系统的激励和响应。6、差分方程MATLAB实现MATLAB以函数filter(num,den,x),来计算在给定输入和差分方程系数时求差分方程的数值解。num,den分别为系统方程的系数向量。x是输入序列。已知某一系统方程为:y[n]-y[n-1]+0.9y[n-2]=x[n]计算并画出脉冲响应h(n),n=(-20,100)n=[-20:100];num=[1];den=[1-10.9];x=impseq(-20,100,0);h=filter(num,den,x);stem(n,h)xlabel('时间序号N');ylabel('脉冲响应h');title('脉冲响应');离散卷积的计算公式如下:序列x(n)、h(n)可以是有限长或无限长,但为了在计算机上绘图观察方便,我们主要讨论有限长序列。如果x(n)和h(n)长度分别为M和N,则响应序列y(n)也为有限长序列,其长度为L=M+N-1。于是,上式可以“形象”地描述为两个有限长序列的反褶、移位、相乘、累加过程,这使计算机编程十分方便。卷积函数conv(a,b)实现两个序列a,b的卷积。例:假定两个序列。x=[3,11,7,0,-1,4,2];y=[2,3,0,-5,2,1];c=conv(x,y);stem(c)()()*()()()mynxnhnxmhnm将函数conv稍加扩展为函数conv-m,它可以对任意的序列求卷积。格式如下:function[y,ny]=conv_m(x,nx,h,nh,p)%信号处理的改进卷积程序nyb=nx(1)+nh(1);nyc=nx(length(x))+nh(length(h));ny=[nyb:p:nyc];y=conv(x,h);已知试求卷积C(t)=f1(t)*f2(t),并绘制出f1、f2及卷积以后的波形。p=0.1;t1=[0:p:1];f1=t1.*(t10);t2=[-1:p:2];f2=t2.*exp(-t2).*(t2=0)+exp(t2).*(t20);[y,ny]=conv_m(f1,t1,f2,t2,p);Subplot(3,1,1);stem(t1,f1)Subplot(3,1,2);stem(t2,f2)Subplot(3,1,3);stem(ny,y)12()()01,0()12,0ttftttttetfttet四、实验报告要求1、简述实验目的和实验原理。2、用笔算求出你选定的序列x(n)、h(n)的卷积结果并与计算机计算结果相比较。实验二离散傅立叶变换一、实验目的1.掌握离散傅里叶变换的有关性质。2.利用matlab验证有关性质。3.利用傅立叶变换进行相关运算。二、实验原理及方法在工程技术的许多分支中,要掌握的基本内容之一就是正确理解时域和频域的关系。对于数字系统来说,就是要精通离散傅立叶变换,因此离散傅立叶变换在数字信号处理中占有十分重要的地位。在实际应用中,有限长序列有相当重要的地位,由于计算机容量的限制,只能对过程进行逐段分析。由于有限长序列,引入DFT(离散付里叶变换)。傅里叶变换建立以时间t为自变量的“信号”与以频率f为自变量的“频率函数”(频谱)之间的某种变换关系。所以“时间”或“频率”取连续还是离散值,就形成各种不同形式的傅里叶变换对。四种不同傅里叶变换对1.傅里叶级数(FS):连续时间,离散频率的傅里叶变换。周期连续时间信号傅里叶级数(FS)得到非周期离散频谱密度函数。2.傅里叶变换(FT):连续时间,连续频率的傅里叶变换。非周期连续时间信号通过连续付里叶变换(FT)得到非周期连续频谱密度函数。3.序列的傅里叶变换(DTFT):离散时间,连续频率的傅里叶变换。非周期离散的时间信号(单位园上的Z变换(DTFT))得到周期性连续的频率函数。4.离散傅里叶变换(DFT):离散时间,离散频率的傅里叶变换。上面讨论的前三种傅里叶变换对,都不适用在计算机上运算,因为至少在一个域(时域或频域)中,函数是连续的。因为从数字计算角度我们感兴趣的是时域及频域都是离散的情况,这就是第四种离散傅里叶变换。离散傅里叶级数(DFS)设为周期为N的周期序列,则其离散傅里叶级数(DFS)变换对为:正变换逆变换其中利用MATLAB实现傅立叶级数计算编写函数实现DFS计算functionxk=dfs(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);21100()[()]()()NNjnknkNNnnXkDFSxnxnexnW2110011()[()]()()NNjnknkNNnkxnIDFSXkXkeXkWNN2jNNWe()xnnk=n'*k;WNnk=WN.^nk;xk=xn*WNnk;例:xn=[0,1,2,3],N=4xn=[0,1,2,3];N=4;xk=dfs(xn,N)'逆运算IDFSfunctionxn=idfs(xk,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);xn=xk*WNnk/N;离散傅立叶变换的正、逆变换定义为:比较正、逆变换的定义式可以看出,只要把DFT公式中的系数改为,并最后乘以1/N,那么,DFT的计算程序就可以用来计算IDFT。例:已知序列试绘制序列及其傅立叶变换幅度谱N=100;n=0:N-1;xn=cos(0.48*pi*n)+cos(0.52*pi*n);xk=dfs(xn,N);magxk=abs(xk);subplot(2,1,1)plot(n,xn)subplot(2,1,2)k=0:length(magxk)-1;plot(k,magxk)210()[()]()NjnkNnXkDFTxnxne2101()[()]()NjknNkxnIDFTxkXkeNx(n)cos(0.48n)cos(0.52n),(0n100)2jnkNe2jnkNeDFT的应用DFT在数字滤波、功率谱分析、仿真、系统分析、通讯理论方面有广泛的应用。DFT的特性1.周期性2.对称性3.线性4.时移5.频移6.共轭7.折叠8.实序列的对称性9.卷积利用MATLAB对DFT的特性进行验证例:分析:因为x(n)是复指数,它满足周期性,我们将在两个周期中的401个频点上作计算来观察其周期性。n=0:10;x=(0.9*exp(j*pi/3)).^n;k=-200:200;w=(pi/100)*k;X=x*(exp(-j*pi/100)).^(n'*k);magX=abs(X);angX=angle(X);subplot(2,1,1);plot(w/pi,magX);subplot(2,1,2);plot(w/pi,angX/pi);()(0.9exp(/3)),010nxnjn检验频移特性乘以复数指数对应于一个频移令n=0:100;x=cos(pi*n/2);k=-100:100;w=(pi/100)*k;X=x*(exp(-j*pi/100)).^(n'*k);y=exp(j*pi*n/4).*x;Y=y*(exp(-j*pi/100)).^(n'*k);subplot(2,2,1);plot(w/pi,abs(X));axis([-1,1,0,60]);subplot(2,2,2);plot(w/pi,angle(X)/pi);axis([-1,1,-1,1]);

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功