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

上传人:m**** 文档编号:486195587 上传时间:2024-02-27 格式:DOC 页数:14 大小:950.51KB
返回 下载 相关 举报
基于MATLAB的离散非周期信号频域分析_第1页
第1页 / 共14页
基于MATLAB的离散非周期信号频域分析_第2页
第2页 / 共14页
基于MATLAB的离散非周期信号频域分析_第3页
第3页 / 共14页
基于MATLAB的离散非周期信号频域分析_第4页
第4页 / 共14页
基于MATLAB的离散非周期信号频域分析_第5页
第5页 / 共14页
点击查看更多>>
资源描述

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

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

2、=n*k;WNnk=WN.nk;Xk=x*WNnk;end建立一个离散非周期方波信号通过周期延拓后所得的周期序列利用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),-);hold on;stem(-4:7,abs(Xk1) abs(Xk1) abs(Xk1),LineWidth,2);grid;figure(2);plot(-1023:20

3、48)/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为周期延拓后的频谱:即第一幅图表示的是周期序列 的频谱,第二幅图表示的是周期序列的频谱。两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。(二)非周期离散方波信号频域分析对于非周期离散方波信号,可采用离散时间傅里叶变换DTFT进行分析。上式为离散时间信号x(n)的离散时间傅里叶变换(DTFT)。上式为的离散时间傅里叶反变换

4、(IDTFT)。由于:所以序列x(n)绝对可和,意味着DTFT存在,而非稳定序列(比如周期序列)不满足绝对可和条件,所以其DTFT不存在。在MTALAB中,DTFT可以用以下语句实现:w=-3*pi:0.01:3*pi;K=length(w);X=x*exp(-j*n*w*K);建立一个离散非周期方波信号的离散傅里叶变换利用DTFT计算实现代码如下:clear all;close all;clc;n=0:7;x=ones(1,8);w=-3*pi:0.01:3*pi;X=x*exp(-j*n*w);figure(1);plot(w/pi,abs(X);grid;figure(2);plot(w

5、/pi,angle(X);grid;set(gcf,color,w);运行后分别得到该离散非周期方波信号的幅频特性与相频特性:幅频特性相频特性(三) 两种变换DFS的DTFT的性质DFS主要具有如下性质:1. 线性性质2. 周期卷积性质3. 复共轭4. 帕斯瓦尔定理DTFT同连续时间信号傅里叶变换相似,具有如下性质:1. 线性性质2. 时域频域平移性质3. 时间翻转性质4. 共轭对称性质5. 时域频域卷积性质6. 调制性质7. 频域微分性质8. 帕斯瓦尔定理从DTFT的推导过程,说明DTFT是DFS当的极限情况。共同点:在时域都是离散的,在频域都是以为周期,周而复始。不同点:离散时间周期信号频

6、谱是离散的,具有谐波性,是谐波复振幅,适用于计算机计算。而离散时间非周期信号的频谱则是连续的,不具有谐波性, 表示的是谐波密度,是连续变量的函数,所以不便于计算机进行分析计算。(四) 离散傅里叶变换(DFT)由于DTFT不便于计算机进行计算,所以需要建立一种时域和频域都是离散的傅里叶变换对,这就是离散傅里叶变换(DFT)上式为离散时间非周期信号的离散傅里叶变换(DFT)上式为DFT的反变换,记作IDFT。和称为离散傅里叶变换(DFT)对。在MTALAB中,DFT通过建立函数实现:function Xk=DFT(n,x,N)if Nlength(x) n=0:N-1; x=x zeros(1,N

7、-length(x);endk=0:N-1;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk=x*WNnk;End建立一个离散非周期方波信号的离散傅里叶变换利用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);gri

8、d;figure(2);plot(-1023:2048)/2048*32,angle(X) angle(X) angle(X),-);hold on;stem(-16:31,angle(Xk2) angle(Xk2) angle(Xk2),LineWidth,2);grid;set(gcf,color,w);运行后分别得到该离散非周期方波信号的幅频特性与相频特性:幅频特性相频特性两图中的包络线表示的是通过快速傅里叶变换(FFT)所得到的频谱线。离散傅里叶变换是傅里叶变换在时域、频域均离散化的形式,因而与其他傅里叶变换有着相似的性质。但是它又是从傅里叶级数派生而来的,所以又具有一些与其他傅里叶变

9、换不同的特性,最主要的是圆周位移性质和圆周卷积性质。二、 快速傅里叶变换(FFT)快速傅里叶变换,简称FFT,是计算DFT的快速算法,习惯上是指以库利和图基算法为基础的一类高效算法。根据快速傅里叶变换基本思路以及基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/

10、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(k)=y(k)+t; end u=u*WN; end end建立一个离散非周期方波信号的快速傅里叶变换利用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

11、=2K;n=0:N-1;x=randn(1,2K);tic,X=fft(x,N),toctic,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点取一个值,形

12、成一个新的序列。在MATLAB中,通过以下程序实现:clear all;close all;clc;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时得到的原始序列与采样

13、序列的幅频特性(蓝色为原始序列,绿色为采样序列)。由此可见,采样周期在D大于2的范围内,出现明显的混叠现象,有失真产生,而在小于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备13022795号 | 川公网安备 51140202000112号