数字信号处理实验-matlab版-离散傅里叶级数(DFS)_第1页
数字信号处理实验-matlab版-离散傅里叶级数(DFS)_第2页
数字信号处理实验-matlab版-离散傅里叶级数(DFS)_第3页
数字信号处理实验-matlab版-离散傅里叶级数(DFS)_第4页
数字信号处理实验-matlab版-离散傅里叶级数(DFS)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验11离散傅里叶级数〔DFS〕(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否那么下载之后的word格式会让很多局部格式错误,谢谢)XXXX学号姓名处XXXX一、实验目的

1、加深对离散周期序列傅里叶级数(DFS)根本概念的理解。2、掌握用MATLAB语言求解周期序列傅里叶级数变换和逆变换的方法。3、观察离散周期序列的重复周期数对频谱特性的影响。4、了解离散序列的周期卷积及其线性卷积的区别。二、实验内容1、周期序列的离散傅里叶级数。2、周期序列的傅里叶级数变换和逆变换。3、离散傅里叶变换和逆变换的通用子程序。4、周期重复次数对序列频谱的影响。5、周期序列的卷积和。三、实验环境MATLAB7.0四、实验原理用matlab进行程序设计,利用matlab绘图十分方便,它既可以绘制各种图形,包括二维图形和三位图形,还可以对图像进行装饰和控制。1、周期序列的离散傅里叶级数

(1)连续性周期信号的傅里叶级数对应的第k次谐波分量的系数为无穷多。而周期为N的周期序列,其离散傅里叶级数谐波分量的系数只有N个是独立的。(2)周期序列的频谱也是一个以N为周期的周期序列。2、周期序列的傅里叶级数变换和逆变换例11-1一个周期性矩形序列的脉冲宽度占整个周期的1/4,一个周期的采样点数为16点,显示3个周期的信号序列波形。要求:

(1)用傅里叶级数求信号的幅度频谱和相位频谱。

(2)求傅里叶级数逆变换的图形,与原信号图形进行比拟。解MATLAB程序如下:N=16;xn=[ones(1,N/4),zeros(1,3*N/4)];xn=[xn,xn,xn];n=0:3*N-1;k=0:3*N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k); %离散傅里叶级数变换x=(Xk*exp(j*2*pi/N).^(n'*k))/N; %离散傅里叶级数 逆变换subplot(2,2,1),stem(n,xn);title('x(n)');axis([-1,3*N,1.1*min(xn),1.1*max(xn)]);subplot(2,2,2),stem(n,abs(x)); %显示逆变换结果title('IDFS|X(k)|');axis([-1,3*N,1.1*min(x),1.1*max(x)]);subplot(2,2,3),stem(k,abs(Xk)); %显示序列的幅度谱title('|X(k)|');axis([-1,3*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);subplot(2,2,4),stem(k,angle(Xk)); %显示序列的相位谱title('arg|X(k)|');axis([-1,3*N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]);运行结果如图11-1所示。图11-1由离散傅里叶级数逆变换图形可见,与原信号相比,幅度扩大了32倍。这是因为周期序列为原主值序列周期的3倍,做逆变换时未做处理。可以将逆变换程序改为x=Xk*exp(j*2*pi/N).^(n¢*k)/(3*3*N);

3、离散傅里叶级数变换和逆变换的通用子程序由例11-1可见,周期序列进行傅里叶级数变换和逆变换,是依据变换公式进行程序编写的,无论信号序列如何变化,求解的公式总是一样的。因此,可以将其编写成通用子程序。离散傅里叶级数变换通用子程序dfs.m:function[Xk]=dfs(xn,N);n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;Xk=xn*WN.^nk;离散傅里叶级数逆变换通用子程序idfs.m:Function[xn]=idfs(Xk,N)n=0:N-1;k=0:N-1;WN=exp(j*2*pi/N);nk=n'*k;xn=(Xk*WN.^nk)/N;例11-2利用上述两个子程序,再做一遍例11-1。

解由于需要调用子程序,其中通用子程序仅适用于对主值区间进行傅里叶级数变换和逆变换,周期次数无法传递给通用子程序,因此程序执行的结果仅显示图11-1中一个周期的情况。N=16;xn=[ones(1,N/4),zeros(1,3*N/4)];n=0:N-1;Xk=dfs(xn,N); %离散傅里叶级数变换xn1=idfs(Xk,N); %离散傅里叶级数 逆变换subplot(2,2,1),stem(n,xn);axis([0,N-1,0,1.1*max(xn)]);title('x(n)');subplot(2,2,2),stem(n,abs(xn1)); %显示逆变换结果axis([0,N-1,0,1.1*max(abs(xn1))]);title('idfs|X(k)|');subplot(2,2,3),stem(n,abs(Xk)); %显示序列的幅度谱title('|X(k)|');subplot(2,2,4),stem(n,angle(Xk)); %显示序列的相位谱title('arg|X(k)|');运行结果如图11-2所示。

图11-24、周期重复次数对序列频谱的影响理论上讲,周期序列不满足绝对可积条件,因此不能用傅里叶级数变换来表示。要对周期序列进行分析,可以先取K个周期进行处理,然后再让K无限增大,研究其极限情况。由这一分析思路,可以观察信号序列由非周期到周期变化时,频谱由连续谱逐渐向离散谱过渡的过程。

下面举例说明信号采用不同的重复周期次数对序列频谱的影响。例11-3一个矩形序列的脉冲宽度占整个周期的1/2,一个周期的采样点数为10点,用傅里叶级数变换求信号的重复周期数分别为1、4、7、10时的幅度频谱。解MATLAB程序如下:xn=[ones(1,5),zeros(1,5)]; %建立一个周期的时域信号Nx=length(xn);Nw=1000;dw=2*pi/Nw; %把2p分为Nw份,频率分辨率为dwk=floor((-Nw/2-0.5):(Nw/2+0.5)); %建立关于0轴对称的频率向量forr=0:3K=3*r+1;nx=0:(K*Nx-1); %周期延拓后的时间向量x=xn(mod(nx,Nx)+1); %周期延拓后的时间信号xXk=x*(exp(-j*dw*nx'*k))/K; %进行傅里叶级数变换subplot(4,2,2*r+1),stem(nx,x);axis([0,K*Nx-1,0,1.1]);ylabel('x(n)');subplot(4,2,2*r+2),plot(k*dw,abs(Xk));axis([-4,4,0,1.1*max(abs(Xk))]);ylabel('X(k)');end程序运行结果如图11-3所示。图11-3注意mod函数的用法,由于MATLAB中变量的下标由1开始,而mod函数的结果却从零开始,因此语句中加1。

由图11-3可以看出,信号序列的周期数越多,那么频谱越是向几个频点集中。当信号序列的周期数趋于无穷大时,频谱转化为离散谱。5、周期序列的卷积和时域周期序列的卷积和与频域周期序列的积相互对应。注意:周期序列的卷积和与非周期序列的卷积和有所区别。和均为变量为m,周期为N的周期序列,故它们的乘积也是周期序列。 (2)卷积求和是在一个周期内进行的,即从m=0到m=N-1。

(3)如果x1(n)和x2(n)的周期长度不同,那么卷积和的长度取N=max[N1,N2]。

下面举例说明。例11-4两个周期序列分别为 =[1,1,1,0,0,0], =[0,1,2,3,0,0],用图形表示它们的周期卷积和。解为了讨论问题的方便,例题选择两个序列均以N=6为周期,以动态图形演示其卷积和的过程。程序如下:clf; %图形窗清屏n=0:5; %建立时间向量nxn1=[0,1,2,3,0,0]; %建立xn1序列主值xn2=[1,1,1,0,0,0];N=length(xn1); %建立xn2序列主值nx=(-N:3*N-1);hxn2=xn2(mod(nx,N)+1); %将xn2序列周期延拓u=[zeros(1,N),xn2,zeros(1,2*N)]; %按xn2周期延拓后的长度重建主值信号xn12=fliplr(xn1); %将xn1作左右反折hxn1=xn1(mod(nx,N)+1); %将xn1反折后的序列周期延拓N1=length(hxn1);y=zeros(1,4*N); %将y存储单元初始化fork=0:N-1 %动态演示绘图开始p=[zeros(1,k+1),hxn1(1:N1-k-1)]; %使 hxn1向右循环移位y1=u.*p; %使输入和翻转移位的脉冲过渡函数逐项相乘yk=sum(y1); %相加y([k+1,k+N+1,k+2*N+1,k+3*N+1])=yk; %将结果放入数组ysubplot(4,1,1);stem(nx,hxn2);axis([-1,3*N,0,1.1]);ylabel('x2(n)');subplot(4,1,2);stem(nx,p);axis([-1,3*N,0,3.3]);ylabel('x1(n)');subplot(4,1,3);stem(k,yk); %作图表示主值区每一次卷积的结果axis([-1,3*N,0,6.6]);holdon%在图形窗上保存每一次运行的图形结果ylabel('主值区');subplot(4,1,4);stem(nx,y);axis([-1,3*N,0,6.6]);ylabel('卷积结果');pause(2); %停顿2秒end程序运行结果如图11-4所示。图11-4五、实验过程(2)一个信号序列的主值为x(n)=[0,1,2,3,2,1,0],显示2个周期的信号序列波形。要求:

①用傅里叶级数变换求信号的幅度频谱和相位频谱,用图形表示。

②求傅里叶级数逆变换的图形,并与原信号图形进行比拟。解程序如下:>>N=7;>>n=0:2*N-1;>>k=0:2*N-1;>>xn=[0,1,2,3,2,1,0];>>xn=[xn,xn];>>Xk=xn*exp(-j*2*pi/N).^(n'*k);>>x=Xk*exp(j*2*pi/N).^(n'*k)/N;>>subplot(2,2,1),stem(k,abs(Xk));>>title('|X(k)|幅度谱');>>subplot(2,2,2),stem(k,angle(Xk));>>title('arg|X(k)|相位谱');>>subplot(2,2,3),stem(n,abs(x));>>title('IDFS|Xk|逆变换结果');>>subplot(2,2,4),stem(n,xn);>>title('原信号图形');程序运行结果如图11-5所示。图11-5(3)一个信号序列的主值为x(n)=R2(n),。要求:

①显示x(n)和图形。

②用傅里叶级数变换求 ,并显示图形。解程序如下:>>clf;>>xn=[1,0,0,0];>>n=0:3;>>N=length(xn);>>nx=(-N:3*N-1);>>hxn=xn(mod(nx,N)+1);>>k=(-N:3*N-1);>>Xk=hxn*exp(-j*2*pi/N).^(nx'*k);>>subplot(2,2,1);stem(n,xn);>>title('x(n)');>>subplot(2,2,2);stem(nx,hxn);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论