离散傅里叶变换及快速算法

合集下载

[理学]离散傅里叶变换及其快速算法

[理学]离散傅里叶变换及其快速算法
可先使信号通过一个低通滤波器使滤波后的信号中的最高频率成为fmax然后根据采样定理来确定采样频率f2称为nyquist频率或称混叠频率离散傅里叶变换的泄漏问题leakage在实际应用中通常将所观测的信号限制在一定的时间间隔内也就是说在时域对信号进行截断操作或称作加时间窗亦即用时间窗函数乘以信号即由卷积定理可知时域相乘频域为卷积则有有时会造成能量分散现象称之为频谱泄漏频谱泄漏
非周期序列的离散时间傅里叶变换 (DTFT) /序列的傅里叶变换
• 定义序列x(n)的离散时间傅里叶变换(DTFT)为:
X (e ) DTFT{x(n)}
j n jn x ( n )e
• 序列x(n)的离散时间傅里叶逆变换(IDTFT)为:
x(n) IDTFT{X (e j )} 1 2
按时间抽取的FFT算法
• 设N=2M,M为正整数,如取N=23=8,即离散时间信号为
x(n) {x(0), x(1), x(2), x(3), x(4), x(5), x(6), x(7)}
• 按照规则①将序列x(n)分为奇偶两组,一组序号为偶数, 另一组序号为奇数,即
{x(0), x(2), x(4), x(6) | x(1), x(3), x(5), x(7)}



X (e j )e jn d
傅里叶变换对小结
• 傅里叶级数(FS)(时域:连续周期;频域:非周期离散)
1 Xk T

T 2
T 2
x(t )e jk1t dt
x(t )
k


X k e jk1t
k 0, 1, 2,
• 傅里叶变换(FT)(时域:连续非周期;频域:非周期连续)

DFT及其快速算法

DFT及其快速算法

DFT及其快速算法DFT(离散傅里叶变换)是傅里叶变换在离散时间序列上的表示,具有广泛应用于信号处理和图像处理等领域。

DFT的计算复杂度通常为O(N^2),其中N为序列的长度。

为了减少计算复杂度,人们发展了许多快速算法,其中最著名的是快速傅里叶变换(FFT)。

DFT可以将一个信号或序列分解成一系列正弦和余弦函数的频谱成分。

它将时域的信号转换为频域的频谱,揭示了信号中各个频率成分的振幅和相位信息。

DFT可以用于信号滤波、频谱分析、数据压缩等许多应用。

DFT的定义如下:X[k]=Σ(x[n]*e^(-j*2πk*n/N)),其中0<=k<N该公式表示了将N个离散时间域样本x[n]变换为N个离散频率域样本X[k]的计算方式。

其中e^(-j*2π/N)为旋转因子,N为序列的长度。

DFT的计算复杂度为O(N^2),需要进行N次乘法和加法运算。

对于大规模的序列,计算速度较慢,为了提高计算效率,人们提出了FFT算法。

FFT是一种高效的DFT计算方法,它基于DFT的对称性质和递归算法来减少计算量。

FFT的计算复杂度为O(NlogN),比DFT快速得多。

FFT算法的基本思想是将一个长度为N的序列分解为两个长度为N/2的子序列,并利用子序列的DFT结果计算整个序列的DFT结果。

这个过程不断重复,直到达到长度为1的序列,也就是基本的正弦和余弦函数。

FFT算法主要有两种形式:快速递归FFT和快速迭代FFT。

快速递归FFT是通过递归的方式将序列分解为子序列,并利用子序列的DFT结果计算整个序列的DFT结果。

这个过程类似于分治法,将复杂的问题分解为简单的子问题,然后将子问题的解合并起来得到最终结果。

快速迭代FFT是通过迭代的方式将序列分解为子序列,然后利用旋转因子和蝶形运算来计算序列的DFT结果。

蝶形运算是FFT算法中的基本操作,通过两两配对的方式进行乘法和加法运算,将两个输入序列转换为两个输出序列。

这个过程可以通过迭代的方式进行,并且可以实现并行计算,提高计算速度。

第3章 离散傅里叶变换及其快速算法

第3章  离散傅里叶变换及其快速算法

计算中, 在DFT计算中,不论是乘法和加法,运算量均与 计算中 不论是乘法和加法, N2成正比。因此,N较大时,运算量十分可观。例 成正比。因此, 较大时 运算量十分可观。 较大时, 计算N=10点的 点的DFT,需要 次复数相乘, ,计算 点的 ,需要100次复数相乘,而 次复数相乘 N=1024点时,需要 点时, 点时 需要1048576(一百多万)次复数乘 (一百多万) 如果要求实时处理, 法,如果要求实时处理,则要求有很高的计算速 度才能完成上述计算量。 度才能完成上述计算量。 反变换IDFT与DFT的运算结构相同,只是多 与 的运算结构相同, 反变换 的运算结构相同 乘一个常数1/N,所以二者的计算量相同。 乘一个常数 ,所以二者的计算量相同。
nk X (k ) = ∑ { Re [ x( n)]Re WN − I m [ x(n)]I m [WNnk ] n =0 N −1
(
+ j Re [ x(n)]I m
(
[ ] [W ]+ I
nk N
)
nk [ x( n)]Re WN } m
[ ])
又每个复数相加包括2个实数相加,所以,每计算一个 X( k) 要进行 次实数相乘和 次实数相乘和2N+2( N-1) =2( 2N-1) 次实 ( ) 要进行4N次实数相乘和 ( ) ( ) 数相加,因此,整个DFT运算需要 2实数相乘和 (2N-1) 运算需要4N 实数相乘和2N( 数相加,因此,整个 运算需要 ) 次实数相加。 次实数相加。
虽然频谱分析和DFT运算很重要 , 但在很长 运算很重要, 虽然频谱分析和 运算很重要 一段时间里, 由于DFT运算复杂 , 并没有得到 运算复杂, 一段时间里 , 由于 运算复杂 真正的运用, 真正的运用 , 而频谱分析仍大多采用模拟信号 滤波的方法解决, 直到1965年首次提出 年首次提出DFT运 滤波的方法解决 , 直到 年首次提出 运 算的一种快速算法以后, 情况才发生了根本变 算的一种快速算法以后 , 人们开始认识到DFT运算的一些内在规律 , 运算的一些内在规律, 化 , 人们开始认识到 运算的一些内在规律 从而很快地发展和完善了一套高速有效的运算 方法——快速付里变换(FFT)算法。FFT的出 快速付里变换( 方法 快速付里变换 )算法。 的出 现 , 使 DFT 的 运 算 大 大 简 化 , 运 算 时 间 缩 短 二个数量级, 一 ~ 二个数量级 , 使 DFT的运算在实际中得到 的运算在实际中得到 广泛应用。 广泛应用。

第三章 离散傅里叶变换及其快速算法

第三章 离散傅里叶变换及其快速算法

~ ~ 设周期序列 x 1( n) 和 x 2 ( n) 的周期均为N,且:
~ X 1(k ) DFS[~1(n)], x
~ X 2(k ) DFS[~2(n)]; x
~3(n) a~1(n) b~ 2(n) (a,b均为常数) x x 如果: x
则有: ~ ~ ~ ~1(n) b~2(n)] aX 1(k ) bX 2(k ) X 3(k ) DFS[ax x
1 2
③周期卷积满足交换律。 同理可得: 如果: ~(n) ~1(n) ~ 2(n) y x x
则有:
1 N 1 ~ ~ 1 ~ ~ ~ Y (k ) DFS[ ~1(n) ~ 2(n)] X 1(l ) X 2(k l ) X 1(k ) * X 2(k ) x x N l 0 N
~(n) 1 x N ~(k) j N kn ...(3.2.1a) x e
k 0 N 1 2
两边 e
N 1
j
2 nr N
并从n=0~N-1求和得:
N 1 N 1 2 2 ~ j ( k r ) n ~(n) j N nr 1 x e X(k)e N N n 0 k 0 n 0 N 1 1 N 1 j 2N ( k r ) n ~ X(k)[ e ] (交换右边求和次序) N n 0 k 0 ~ X(r)
~ ~ kn X 1(k ) X 2(k )W N
k 0 k ( nmr ) N
N 1
W
]
~1(m) ~ 2(n m lN ) x x
m 0
1 N
W
k 0
N 1
k ( nmr ) N
1, r (n m) lN 0, r (n m) lN

离散傅里叶变换(DFT)及其快速算法-庄

离散傅里叶变换(DFT)及其快速算法-庄

图像识别
通过对图像进行DFT变换, 提取特征向量,可用于图 像的分类、识别和检索。
在频谱分析中的应用
频谱估计
通过DFT对信号进行频谱分析, 可以估计信号的频率分布和强度。
调制识别
利用DFT对接收信号进行频谱分析, 可以识别信号的调制方式和参数。
雷达目标识别
通过对雷达回波信号进行DFT变换, 可以提取目标特征,实现目标分类 和识别。
图像处理
在图像处理领域,DFT被广泛应用于图像频域分 析和变换编码等技术。庄算法等快速算法的应用 ,使得图像处理更加高效,为图像压缩、图像增 强等技术的发展提供了重要支撑。
科学计算
在科学计算领域,DFT被广泛应用于数值分析和 数值计算。庄算法等快速算法的出现,提高了科 学计算的精度和速度,为科学研究和工程设计提 供了更加可靠的数值分析方法。
PART 02
DFT的基本原理
离散傅里叶级数(DFS)
定义
离散傅里叶级数是周期为N的复数序 列x[n],其可以通过三角函数的线性 组合来表示。
公式
X[k] = ∑_{n=0}^{N-1} x[n] * w^(kn) / sqrt(N)
离散傅里叶变换(DFT)的定义
定义
DFT是对于有限长序列x[n]的变换,将x[n]映射到频域X[k]。
对未来研究和应用的展望
算法优化
随着计算技术的发展,未来可以进一步优化庄算法等快速算法,提高计算效率和精度, 以满足更加复杂和大规模的信号处理、图像处理、通信系统和科学计算等应用需求。
应用拓展
随着数字化时代的到来,离散傅里叶变换及其快速算法在各个领域的应用前景将更加广 阔。未来可以进一步拓展其在人工智能、物联网、量子计算等领域的应用,推动相关技

信号实验报告( 离散傅里叶变换及其快速算法及IIR数字滤波器的设计)

信号实验报告( 离散傅里叶变换及其快速算法及IIR数字滤波器的设计)

信号实验一离散傅里叶变换及其快速算法一、实验目的1、掌握计算序列的离散傅里叶变换(FFT)的方法;2、掌握实现时间抽取快速傅里叶变换(FFT)编程方法;3、加深对DFT与序列的傅里叶变换和Z变换之间的关系的理解;4、复习复数序列的运算方法。

二、程序设计框图1.码位倒置程序框图2.蝶形图运算程序框图三、实验程序实验程序的源代码如下:#include"math.h"#include"stdio.h"/*------------------------------------------------------------------------------------------子函数部分------------------------------------------------------------------------------------------*/ void swap(float *a,float *b)//交换变量子函数{float T;T=*a;*a=*b;*b=T;}void fft (float A [],float B [],unsigned M)//数组A为序列的实部, 数组B为序列的虚部{unsigned long N,I,J,K,L,LE,LE1,P,Q,R;float Wr,Wi,W1r,W1i,WTr,WTi,theta,Tr,Ti;N=1<<M;J=0;for(I=0;I<N-1;I++){if(J>I){swap(&A [I],&A [J]);swap(&B [I],&B [J]);}K=N>>1;while(K>=2&&J>=K){J-=K;K>>=1;}J+=K;}for(L=1;L<=M;L++){LE=1<<L;LE1=LE/2;Wr=1.0;Wi=0.0;theta=(-1)*3.1415926536/LE1;W1r=cos (theta);W1i=sin (theta);for(R=0;R<LE1;R++){for(P=R;P<N-1;P+=LE){Q=P+LE1;//基本蝶形图的复数运算Tr=Wr*A[Q]-Wi*B[Q];Ti=Wr*B[Q]+Wi*A[Q];A[Q]=A[P]-Tr;B[Q]=B[P]-Ti;A[P]+=Tr;B[P]+=Ti;}WTr=Wr;WTi=Wi;Wr=WTr*W1r-WTi*W1i;Wi=WTr*W1i+WTi*W1r;}}return;}/*------------------------------------------------------------------------------------------主函数部分------------------------------------------------------------------------------------------*/ void main(){float A[20],B[20];char t1,t2,file_name[20];int M,N,i,iiff;FILE *fp;/*************************************数据读取部分************************************/ printf("请输入文件名:");//输入数据文件名scanf("%s",file_name);printf("FFT变换还是IFFT变换?(FFT:1,IFFT:-1):");//输入变换方式, 1为FFT, -1为IFFTscanf("%d",&iiff);while(iiff!=1&&iiff!=-1)//检错: 检验上一步的输入是否有错, 有错则重新输入{printf("输入错误, 请重新输入! ");printf("FFT or IFFT?(FFT:1,IFFT:-1):");scanf("%d",&iiff);}fp=fopen(file_name,"r");//打开文件并读入数据fscanf(fp,"%d",&M);N=pow(2,M);//计算序列总数for(i=0;i<N;i++)//读取文件中的数据{fscanf(fp,"%f%c%c%f",&A[i],&t1,&t2,&B[i]);if(iiff==-1)//根据FFT或IFFT修正BB[i]=B[i]*-1;if(t2!='j')//检错: 检验读取格式是否有错{printf("输入格式错误\n");break;}if(t1=='+')//判断虚部的正负号B[i]=B[i];else if(t1=='-')B[i]=-B[i];}/****************************************变换部分****************************************/ fft(A,B,M);//FFT变换/**************************************数据输出部分**************************************/ fp=fopen("fft_result.txt","w"); //输出结果if(iiff==-1)fprintf(fp,"IFFT变换的输出结果是: \n");elsefprintf(fp,"FFT变换的输出结果是: \n");for(i=0;i<N;i++){if(iiff==-1) //根据FFT或IFFT修正B{B[i]=B[i]*-1/N;A[i]=A[i]/N;}if(B[i]>=0)//修正虚部的输出格式fprintf(fp,"%f+j%f\n",A[i],B[i]);else if(B[i]<0)fprintf(fp,"%f-j%f\n",A[i],-B[i]);else if(B[i]==0)fprintf(fp,"%f\n",A[i]);}fclose(fp);}四、程序运行结果检验(1) 1.对序列进行FFT变换输入文件fft_input.txt:21+j02+j0-1+j04+j0控制台输入:请输入文件名: fft_input.txtFFT变换还是IFFT变换?(FFT:1,IFFT:-1): 1输出文件fft_result.txt:FFT变换的输出结果是:6.00000+j0.000002.00000+j2.00000-6.00000+j0.000002.00000+j-2.00000运行结果分析:程序运行输出结果与计算结果相同, 表示傅里叶正变换(FFT)成功。

第2章 离散傅里叶变换(DFT)及其快速算法(FFT)

第2章 离散傅里叶变换(DFT)及其快速算法(FFT)

电信系信息技术教研室
2.1.1 离散傅里叶级数DFS
信号特性的时频域对应关系 连续 离散 周期
非周期 周期 离散
电信系信息技术教研室
2.1.1 离散傅里叶级数DFS
?如何对周期为N的周期序列进行频域分析……
如: ~(n) ~(n kN ) x x 周期序列不能进行Z变换,因为其在 n=-到+ 都 周而复始永不衰减,即 z 平面上没有收敛域,所以 其DTFT亦不存在。但是,如同连续时间周期信号可用 傅氏级数表达,周期序列也可用离散的傅氏级数来表 示。

2 1 2 1

X (2) 0 X (6) 0
X (3) 1 j X (7 ) 1 j

2 1 2 1

电信系信息技术教研室
解法二:公式解
N 1 j 2 N 7 j 2 8 kn
X
k
DFS x n
mk
ki mk ~ ~ x (i ) wN wN X ( k ) i 0
N 1
电信系信息技术教研室
3)共轭对称性
x 对于复序列 ~n ,其共轭序列为
~* ~* DFS x n X k
* *
~* x n
,则:
~ ~ DFSx n X k
解:上述序列的基本周期为 N=4,因而
W4 = e-j2π /4 = -j,
~ X (k )
~ X (0) ~ X (1 ) ~ X (2) ~ X (3)

n0
3
nk ~ x ( n )W 4
3

n0
3
~ ( n )W x 4

数字信号处理—原理、实现及应用(第4版)第3章 离散傅里叶变换及其快速算法 学习要点及习题答案

数字信号处理—原理、实现及应用(第4版)第3章  离散傅里叶变换及其快速算法 学习要点及习题答案

·54· 第3章 离散傅里叶变换(DFT )及其快速算法(FFT )3.1 引 言本章是全书的重点,更是学习数字信号处理技术的重点内容。

因为DFT (FFT )在数字信号处理这门学科中起着不一般的作用,它使数字信号处理不仅可以在时域也可以在频域进行处理,使处理方法更加灵活,能完成模拟信号处理完不成的许多处理功能,并且增加了若干新颖的处理内容。

离散傅里叶变换(DFT )也是一种时域到频域的变换,能够表征信号的频域特性,和已学过的FT 和ZT 有着密切的联系,但是它有着不同于FT 和ZT 的物理概念和重要性质。

只有很好地掌握了这些概念和性质,才能正确地应用DFT (FFT ),在各种不同的信号处理中充分灵活地发挥其作用。

学习这一章重要的是会应用,尤其会使用DFT 的快速算法FFT 。

如果不会应用FFT ,那么由于DFT 的计算量太大,会使应用受到限制。

但是FFT 仅是DFT 的一种快速算法,重要的物理概念都在DFT 中,因此重要的还是要掌握DFT 的基本理论。

对于FFT 只要掌握其基本快速原理和使用方法即可。

3.2 习题与上机题解答说明:下面各题中的DFT 和IDFT 计算均可以调用MA TLAB 函数fft 和ifft 计算。

3.1 在变换区间0≤n ≤N -1内,计算以下序列的N 点DFT 。

(1) ()1x n =(2) ()()x n n δ=(3) ()(), 0<<x n n m m N δ=- (4) ()(), 0<<m x n R n m N = (5) 2j()e, 0<<m n N x n m N π=(6) 0j ()e n x n ω=(7) 2()cos , 0<<x n mn m N N π⎛⎫= ⎪⎝⎭(8)2()sin , 0<<x n mn m N N π⎛⎫= ⎪⎝⎭(9) 0()cos()x n n ω=(10) ()()N x n nR n =(11) 1,()0n x n n ⎧=⎨⎩,解:(1) X (k ) =1N kn N n W -=∑=21j0eN kn nn π--=∑=2jj1e1ekN n k nπ---- = ,00,1,2,,1N k k N =⎧⎨=-⎩(2) X (k ) =1()N knNM n W δ-=∑=10()N n n δ-=∑=1,k = 0, 1, …, N -1(3) X (k ) =100()N knNn n n W δ-=-∑=0kn NW 1()N n n n δ-=-∑=0kn NW,k = 0, 1, …, N -1为偶数为奇数·55·(4) X (k ) =1m knN n W -=∑=11kmN N W W --=j (1)sin esin k m N mk N k N π--π⎛⎫⎪⎝⎭π⎛⎫ ⎪⎝⎭,k = 0, 1, …, N -1 (5) X (k ) =21j 0e N mn kn N N n W π-=∑=21j ()0e N m k nNn π--=∑=2j()2j()1e1em k N N m k Nπ--π----= ,0,,0≤≤1N k mk m k N =⎧⎨≠-⎩(6) X (k ) =01j 0eN nknN n W ω-=∑=021j 0e N k nN n ωπ⎛⎫-- ⎪⎝⎭=∑=002j 2j 1e1ek NN k N ωωπ⎛⎫- ⎪⎝⎭π⎛⎫- ⎪⎝⎭--= 0210j 202sin 2e2sin /2N k N N k N k N ωωωπ-⎛⎫⎛⎫- ⎪⎪⎝⎭⎝⎭⎡⎤π⎛⎫- ⎪⎢⎥⎝⎭⎣⎦⎡⎤π⎛⎫- ⎪⎢⎥⎝⎭⎣⎦,k = 0, 1, …, N -1或 X (k ) =00j 2j 1e 1e Nk N ωωπ⎛⎫- ⎪⎝⎭--,k = 0, 1, …, N -1(7) X (k ) =102cos N kn N n mn W N -=π⎛⎫ ⎪⎝⎭∑=2221j j j 01e e e 2N mn mn kn N N N n πππ---=⎛⎫ ⎪+ ⎪⎝⎭∑=21j ()01e 2N m k n N n π--=∑+21j ()01e 2N m k n N n π--+=∑=22j ()j ()22j ()j ()11e 1e 21e 1e m k N m k N N N m k m k N N ππ--+ππ--+⎡⎤--⎢⎥+⎢⎥⎢⎥--⎣⎦=,,20,,N k m k N mk m k N M ⎧==-⎪⎨⎪≠≠-⎩,0≤≤1k N - (8) ()22j j 21()sin ee 2j mn mnN N x n mn N ππ-π⎛⎫== ⎪-⎝⎭ ()()112222j j j ()j ()0011()=e e ee 2j 2j j ,2=j ,20,(0≤≤1)N N kn mn mn m k n m k n N N N N N n n X k W Nk m N k N mk k N --ππππ---+===--⎧-=⎪⎪⎨=-⎪⎪-⎪⎩∑∑其他(9) 解法① 直接计算χ(n ) =cos(0n ω)R N (n ) =00j j 1[e e ]2n n ωω-+R N (n )X (k ) =1()N knNn n W χ-=∑=0021j j j 01[e e ]e 2N kn n n N n ωωπ---=+∑=0000j j 22j j 11e 1e 21e 1e N N k k N N ωωωω-ππ⎛⎫⎛⎫--+ ⎪ ⎪⎝⎭⎝⎭⎡⎤--⎢⎥+⎢⎥⎢⎥--⎣⎦,k = 0, 1, … , N -1 解法② 由DFT 共轭对称性可得同样的结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(5-5)
W e N
j
2 N
的性质:
正交性,周期性,
共轭对称性(偶序列),可约性。
§5.离散傅里叶变换及快速算法
1.离散傅里叶级数
1.2离散傅里叶级的计算
例5-1 求出下面周期序列的DFS
x(n) 0 ,1,2,3, 0 ,1,2,3, 0,1,2,3
n0
为改进嵌套循环计算的效率,将循环结构改为矩阵形式计算
§5.离散傅里叶变换及快速算法
0.概述
离散时间傅里叶变换(DTFT)是通过周期频谱 来描述一个离散信号序列,即DTFT是连续变 量w的连续函数。离散傅里叶变换(DFT)则是 针对有限长序列,是对DTFT采样后得到的离 散序列。 此种表示方法非常有利于数值计算以及数字信 号处理算法的DSP硬件实现。 本章将研究离散傅里叶级数,离散傅里叶变换 (DFT),及离散傅里叶变换的快速算法FFT。
(5-3)
n0
称之为离散傅里叶级数DFS的系数。是一个基波周期为N的 周期序列。
X (k) X (k N)
§5.离散傅里叶变换及快速算法
W e 在DFS变换中引入复数 N
j
2 N
将DFS正反变换描述为
N 1
X (k) x(n)WNnk
n0
x (n)
1 N
N 1
X (k )WNnk
k 0
n0
x(n)
1 N
N 1
X (k )WNnk
k 0
x
1 N
WN* X
WN WNkn 0
k,n
N
1
1 1
1
WN1
1
W ( N 1) N
1
W ( N 1) N
WN( N
1)2
§5.离散傅里叶变换及快速算法
2.离散傅里叶变换(DFT)
2.2 DTFT与DFT的关系
§5.离散傅里叶变换及快速算法
X ((k))N
X
(N
k)
1 k N 1
Matlab: x=x(mod(-n,N)+1)
§5.离散傅里叶变换及快速算法
3.离散傅里叶变换(DFT)的性质
3.2 序列的循环位移
x(n m) x((n m)) N
§5.离散傅里叶变换及快速算法
3.离散傅里叶变换(DFT)的性质
3.2 序列的循环位移
X WN x
x
1 N
WN* X
1
WN
WNkn
0
k,n
N
1
1
1
1 WN1
W ( N 1)
N
1
W ( N 1) N
WN( N
1)2
§5.离散傅里叶变换及快速算法
1.离散傅里叶级数
1.2离散傅里叶级的计算
Function [Xk] = dfs (xn, N) % Xk and xn are column(not row) vectors if nargin < 2 N = length(xn) n = 0: N-1; k = 0: N-1; WN = exp(-j*2*pi/N); kn = k’*n; WNkn = WN.^kn; Xk = WNkn * xn
§5.离散傅里叶变换及快速算法
2.离散傅里叶变换(DFT)
2.1 DFT的定义
采用对变量取模N的运算,可简写为
x(n) x(n rN ) x(n) x(n mod N ) x((n)) N r
x(n) x((n))N x(n) x(n)RN (n)
周期延拓 加窗操作
对于周期序列 x(n) ,和其主值序列 x(n) ,取DFS 则周期序列的DFS与其主值序列的DFS的关系为:
2.1 DFT的定义
对于一个周期序列 x(n) ,定义它的第一个周期的 有限长序列为该周期序列的主值序列 x(n) ,有
x(n) 0 n N 1
x(n) DFT[x(n)]
0
else x(n)RN (n)
x(n) x(n rN ) r
其中周期序列 x(n) 可视为是有限长序列 x(n) 以N为周期的延拓
W kn0 N
X
(k
)
即DFS系数乘以一个复指数。
的DFS系数为
同样,如果 x(n) 乘以一个复指数,WNkn0 x(n) x(n) 的DFS系数 X (k) 将发生位移。
X (k k0)
§5.离散傅里叶变换及快速算法
2.离散傅里叶变换(DFT)
离散傅里叶级数DFS作为一种过渡形式,可以引出离散傅里 叶变换DFT。DFS用于周期序列,DFT则用于分析有限长序列。
§5.离散傅里叶变换及快速算法
1.离散傅里叶级数
1.3离散傅里叶级的性质 1)线性 如果 x1(n), x2 (n) 都是周期为N的周期序列,则
DFS[x1(n) x2 (n)] X1(n) X 2 (n)
2)位移 如果 X (k) 是周期序列 x(n) 的DFS系数,则
x(n) 的位移序列 x(n n0 )
x(n)
1
N
1
X
(
k
)e
j
2 N
k
n
n 0,1,2,(5-2)
N K 0
§5.离散傅里叶变换及快速算法
x(n)
1
N 1
X
(
k
)e
j
2 N
k
n
n 0,1,2,(5-2)
N K 0
式中将 x(n) 序列分解为N个谐波相关的复指数之和。将
X
(k)N 1x(n)e Nhomakorabeaj
2 N
nk
,k
0,1,2,
§5.离散傅里叶变换及快速算法
4.离散傅里叶变换(DFT)的快速算法FFT
4.2 快速算法(蝶形运算)
§5.离散傅里叶变换及快速算法
§5.离散傅里叶变换及快速算法
§5.离散傅里叶变换及快速算法
§5.离散傅里叶变换及快速算法
8点DFT的FFT运算图
例5-3
§5.离散傅里叶变换及快速算法
4.离散傅里叶变换(DFT)的快速算法FFT
4.1 DFT直接运算的计算量
N 1
X (k ) x(n)WNnk n0
X=WNx (WN: N*N, x: 1*N, X: 1*N)
其计算量为:CN=O(N2)
通常X与W都是复数,计算一个X需要N次复数乘法运算, N-1次复数加法运算。则对所有的X(k)就需要N2次复数 乘法运算,N(N-1)次复数加法运算。当N较大时运算量 将很大。 如N=1024时,要完成1048576次,难以做到实时处理。
3.离散傅里叶变换(DFT)的性质
3.1 线性、对称性、反转
1. 线性: DFT[ax1(n)+bx2(n)]=aDFT[x1(n)]+bDFT[x2(n)] 此时一般需保证x1和x2的DFT有相同的长度。长度不同时需 对短序列补零,使它与长序列的长度相同后再进行变换。
2.反转:
X (0)
k 0
DFT[x((n))N ]
§5.离散傅里叶变换及快速算法
3.离散傅里叶变换(DFT)的性质
3.2 序列的循环位移
例5-2
§5.离散傅里叶变换及快速算法
3.离散傅里叶变换(DFT)的性质
3.3 序列的循环位移的MATLAB实现
function y = cirshftt(x,m,N) if length(x) > N
error('N must be >= the length of x') end x = [x zeros(1,N-length(x))]; n = [0:1:N-1]; n = mod(n-m,N); y = x(n+1);
§5.离散傅里叶变换及快速算法
1.离散傅里叶级数
1.1离散傅里叶级数的定义
设 x(n) 是一个周期为N的周期序列,它满足条件
x(n) x(n kN) (5-1)
式中N称为序列的基波周期。由傅里叶级数可知,周期 函数可由复指数的线性组合来构成。其频率为基波频
率(2pi/N)的倍数。由5-2式的离散傅里叶级数DFS 来表示。
x(k
)
x(k)
0
0 k N 1 else
x(k) x(k rN ) r
§5.离散傅里叶变换及快速算法
2.离散傅里叶变换(DFT)
由于无限长序列 x(n), X (n)可以用它们的主值序列完全表
示,可将前述(5-5)DFS正反变换描述为
其中:
X WN x
N 1
X (k ) x(n)WNnk
相关文档
最新文档