基于MATLAB的离散非周期信号频域分析.doc

上传人:韩长文 文档编号:5020622 上传时间:2020-01-29 格式:DOC 页数:14 大小:950.50KB
返回 下载 相关 举报
基于MATLAB的离散非周期信号频域分析.doc_第1页
第1页 / 共14页
基于MATLAB的离散非周期信号频域分析.doc_第2页
第2页 / 共14页
基于MATLAB的离散非周期信号频域分析.doc_第3页
第3页 / 共14页
基于MATLAB的离散非周期信号频域分析.doc_第4页
第4页 / 共14页
基于MATLAB的离散非周期信号频域分析.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《基于MATLAB的离散非周期信号频域分析.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的离散非周期信号频域分析.doc(14页珍藏版)》请在三一文库上搜索。

1、基于MATLAB的离散信号频域分析、快速傅里叶变换与采样定理一、 离散信号频域分析(一) 周期离散方波信号频域分析与周期模拟信号一样,周期离散信号同样可以展开成傅里叶级数形式,并得到离散傅里叶级数(DFS)Xk=1Nn=-N2N2xne-jkn k=0,1,2,N-1 上式可以看成周期离散信号x(n)的离散傅里叶级数展开。xn=k=0N-1Xkejkn上式是DFS的反变换,记作IDFS并且称X(k)与x(n)构成一对离散傅里叶级数变换对。(以上两式中=2/N)在MTALAB中,DFS通过建立周期延拓函数语句实现:function Xk=DFS(n,x,N)if Nlength(x) n=0:N

2、-1; x=x zeros(1,N-length(x);endk=0:N-1;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk=x*WNnk;end建立一个离散非周期方波信号xn=RNn=1, &0nN-10, &其他R4n通过周期延拓后所得的周期序列利用DFS计算实现代码如下:clear all;close all;clc;n=0:3;x=ones(1,4);X=fft(x,1024);Xk1=DFS(n,x,4);Xk2=DFS(n,x,8);figure(1);plot(-1023:2048)/2048*8,abs(X) abs(X) abs(X),-);ho

3、ld on;stem(-4:7,abs(Xk1) abs(Xk1) abs(Xk1),LineWidth,2);grid;figure(2);plot(-1023:2048)/2048*16,abs(X) abs(X) abs(X),-);hold on;stem(-8:15,abs(Xk2) abs(Xk2) abs(Xk2),LineWidth,2);grid;set(gcf,color,w);运行后得到的是分别以4和8为周期延拓后的R4n频谱:即第一幅图表示的是周期序列 xn=1 -n+ 的频谱,第二幅图表示的是周期序列xn=1, &4kn4+4k0, &4k-4n4k的频谱。两图中的包

4、络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。(二)非周期离散方波信号频域分析对于非周期离散方波信号,可采用离散时间傅里叶变换DTFT进行分析。X=n=-+x(n)e-jn上式为离散时间信号x(n)的离散时间傅里叶变换(DTFT)。xn=1202Xejnd上式为X的离散时间傅里叶反变换(IDTFT)。由于:i=-+x(i)length(x) n=0:N-1; x=x zeros(1,N-length(x);endk=0:N-1;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk=x*WNnk;End建立一个离散非周期方波信号xn=RNn=1, &0nN-10

5、, &其他R8n的离散傅里叶变换Xej利用DFT计算实现代码如下:clear all;close all;clc;n=0:7;x=ones(1,8);X=fft(x,1024);Xk2=DFT(n,x,16);figure(1);plot(-1023:2048)/2048*32,abs(X) abs(X) abs(X),-);hold on;stem(-16:31,abs(Xk2) abs(Xk2) abs(Xk2),LineWidth,2);grid;figure(2);plot(-1023:2048)/2048*32,angle(X) angle(X) angle(X),-);hold o

6、n;stem(-16:31,angle(Xk2) angle(Xk2) angle(Xk2),LineWidth,2);grid;set(gcf,color,w);运行后分别得到该离散非周期方波信号的幅频特性与相频特性:幅频特性相频特性两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。离散傅里叶变换是傅里叶变换在时域、频域均离散化的形式,因而与其他傅里叶变换有着相似的性质。但是它又是从傅里叶级数派生而来的,所以又具有一些与其他傅里叶变换不同的特性,最主要的是圆周位移性质和圆周卷积性质。二、 快速傅里叶变换(FFT)快速傅里叶变换,简称FFT,是计算DFT的快速算法,习惯上是指以

7、库利和图基算法为基础的一类高效算法。根据快速傅里叶变换基本思路以及基2FFT算法,在MTALAB中,FFT通过建立函数实现:function y=fft(x)m=nextpow2(x); N=2m;if length(x)Nx=x,zeros(1,N-length(x); endnxd=bin2dec(fliplr(dec2bin(1:N-1,m)+1;y=x(nxd); for mm=1:m Nmr=2mm; u=1;WN=exp(-i*2*pi/Nmr); for j=1:Nmr/2 for k=j:Nmr:N kp=k+Nmr/2; t=y(kp)*u; y(kp)=y(k)-t; y(

8、k)=y(k)+t; end u=u*WN; end end建立一个离散非周期方波信号xn=RNn=1, &0nN-10, &其他R8n的快速傅里叶变换利用FFT计算实现代码如下:clear all;close all;clc;x=ones(1,8);fx=fft(x,512);z=abs(fx);k=0:length(z)-1;plot(k,z);运行后得到该离散非周期方波信号的幅频特性:分别利用FFT和DFT进行相同运算:clear all;close all;clc;K=input(K=);N=2K;n=0:N-1;x=randn(1,2K);tic,X=fft(x,N),toctic,

9、X=DFT(n,x,N),toc运行结果如下: Columns 1 through 4069Elapsed time is 0.218536 seconds. Columns 1 through 4069Elapsed time is 16.726921 seconds.由此可见,采用DFT计算时间为16.726921秒,而采用FFT计算只需要0.218536秒;说明,FFT在计算速度上,明显优于其他算法。三、采样定理(一)时域采样定理为了验证时域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。在MATLAB中,通过以下程序实现:clear all;close all;cl

10、c;x=ones(1,8);D=2;xd=x(1:D:length(x);fx=fft(x,512);fxd=fft(xd,512);z=abs(fx);s=abs(fxd);k=0:length(z)-1;plot(k,s,k,z);D=2时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。D=3时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。 D=4时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。D=0.5时得到的原始序列与采样序列的幅频特性(蓝色为原始序列,绿色为采样序列)。由此可见,采样周期在D大于2的范围内,出现明显

11、的混叠现象,有失真产生,而在小于1的范围内,采样过于密集,增加运算系统负担。因此,可验证时域采样定理。(二)频域采样定理为了验证频域采样定理,可以把原始采样序列每隔D-1点取一个值,形成一个新的序列。在MATLAB中,通过以下程序实现:clear all;close all;clc;x=-10:0.001:10;y=(sin(x)/x;X=fft(y,20);D=7;Xd=X(1:D:length(X);fxd=ifft(Xd,20);s=fxd;k=0:length(s)-1;plot(k,s); D=7时根据频域样本集合恢复的原信号D=3时根据频域样本集合恢复的原信号D=10时根据频域样本集合恢复的原信号由此可见,采样周期在D小于7的范围内,根据频域样本恢复的原信号与实际原信号有很大差别。因此,可验证频域采样定理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1