DFT在信号频谱分析中的应用
音频处理中的FFT和DFT技术

音频处理中的FFT和DFT技术随着科学技术的不断发展,音频处理技术也得到了越来越广泛的应用。
而将音频信号进行数字化处理的基础就是离散傅里叶变换(DFT)和快速傅里叶变换(FFT)技术。
1. DFT技术离散傅里叶变换(DFT)是指将一个周期序列分成若干个等间隔的点,并用余弦函数和正弦函数的组合来描述这些点的一种数学变换方法。
DFT不仅能够将时域信号转换为频域信号,还可以将频域信号还原为时域信号。
DFT在音频处理中主要应用在频谱分析、降噪、滤波器设计、相位检测等方面。
例如,在频谱分析中,DFT可以将音频信号分解为一系列不同频率的正弦和余弦波形,从而能够分析不同频率的信号成分。
2. FFT技术快速傅里叶变换(FFT)是一种优化的DFT算法。
与DFT相比,FFT算法可以在很短的时间内完成计算,并能够处理更大规模的数据。
因此,FFT技术在数字信号处理中得到了广泛的应用。
FFT在音频处理中的主要应用方面有频谱分析、语音信号处理、音乐合成等。
例如,在语音信号处理中,FFT技术可以用于特征提取和识别,从而能够实现语音识别和语音合成的技术。
3. 应用案例在音频处理中,FFT和DFT技术被广泛地应用,并在多个领域产生了积极的成果。
一个典型的应用案例是音频降噪技术。
传统的降噪方法往往难以准确地抑制噪声,并且容易导致信号失真。
而应用FFT技术可以有效地降低噪声干扰,并且保留语音信号的清晰度。
在音乐合成方面,FFT技术也有着广泛的应用。
例如,曾经有一家名为Ninite的公司使用FFT技术来创建演奏艺术家的虚拟演奏声音库,以此来改变电子音乐的制作方式。
总之,FFT和DFT技术在音频处理中的应用范围非常广泛,涵盖了从频谱分析到语音信号处理,甚至包括音乐合成等多种领域。
随着人工智能和深度学习技术的不断发展,这两种技术的应用价值也将得到更广泛的发挥。
dft与离散傅里叶变换

dft与离散傅里叶变换DFT与离散傅里叶变换引言:数字信号处理中,频域分析是一项重要的技术。
DFT(离散傅里叶变换)和离散傅里叶变换(DFT)是两种常用的频域分析方法。
本文将介绍DFT和离散傅里叶变换的基本原理、应用领域以及它们之间的区别。
一、DFT的基本原理离散傅里叶变换(DFT)是一种将时域信号转换为频域信号的方法。
它的基本原理是将信号分解为不同频率的正弦和余弦波的叠加。
DFT 可以将信号从时域转换到频域,帮助我们分析信号的频谱特征。
DFT的计算公式是通过对信号的采样点进行离散计算得到的。
它将信号分解为一系列复数,表示不同频率的正弦和余弦波的振幅和相位信息。
通常情况下,DFT的输入信号是离散时间的有限长度序列,输出信号也是离散时间的有限长度序列。
二、DFT的应用领域DFT在信号处理领域有着广泛的应用。
以下是几个典型的应用领域:1. 音频信号处理:DFT可以用于音频信号的频谱分析,帮助我们了解音频信号的频率组成以及频谱特征。
它在音频编码、音频效果处理等方面有着重要作用。
2. 图像处理:DFT可以用于图像的频域分析,帮助我们了解图像的频率特征,如边缘、纹理等。
它在图像压缩、图像增强等方面有着广泛的应用。
3. 通信系统:DFT可以用于通信信号的频谱分析,帮助我们了解信号在频域上的特征,如信号的带宽、频率偏移等。
它在调制解调、信道估计等方面有着重要作用。
三、离散傅里叶变换(DFT)与傅里叶变换(FT)的区别离散傅里叶变换(DFT)是傅里叶变换(FT)在离散时间上的应用。
它们之间的区别主要体现在以下几个方面:1. 定义域:傅里叶变换是定义在连续时间上的,而离散傅里叶变换是定义在离散时间上的。
2. 输入信号类型:傅里叶变换可以处理连续时间的信号,而离散傅里叶变换可以处理离散时间的信号。
3. 计算方法:傅里叶变换通过积分计算得到频域信号,而离散傅里叶变换通过对输入信号的采样点进行离散计算得到频域信号。
4. 结果表示:傅里叶变换的结果是连续的频域信号,而离散傅里叶变换的结果是离散的频域信号。
用DFT对模拟信号作频谱分析课件

通过DFT对正弦波信号进行频谱分析,可以观察到该信号在 频域中的表现,即其对应的频率分量。正弦波信号的频谱分 析展示了DFT在处理单一频率信号时的效果,能够准确地提 取出信号的频率信息。
实例二:方波信号的频谱分析
总结词
方波信号的频谱分析展示了DFT在处理复杂信号时的能力。
详细描述
方波信号是一种非单一频率的信号,其频谱分析需要使用DFT进行处理。通过对方波信号进行频谱分析,可以观 察到该信号在频域中的表现,即其包含的多个频率分量。这展示了DFT在处理复杂信号时的能力,能够准确地提 取出信号的频率信息。
假峰现象
01
DFT可能会出现假峰现象,即分析结果中出现一些不存在的频
率分量。
分辨率问题
02
DFT的分辨率有限,对于某些信号可能无法准确地区分相近的
频率分量。
对噪声敏感
03
DFT对噪声比较敏感,噪声可能会影响频谱分析的准确性。
DFT在频谱分析中的实现步骤
1. 采样
对模拟信号进行采样,得到离 散时间信号。
感谢观看
用DFT对模拟信 号作频谱分析课 件
contents
目录
• DFT基本原理 • 模拟信号的频谱分析 • DFT在频谱分析中的应用 • DFT在频谱分析中的实例 • DFT在频谱分析中的注意事项
01
CATALOGUE
DFT基本原理
DFT的定义
01
离散傅里叶变换(DFT):将离 散时间信号转换为频域表示的数 学工具。
DFT将信号分解为不同频率的正弦波 和余弦波的叠加。
通过DFT,可以分析信号中各个频率 分量的幅度和相位信息。
02
CATALOGUE
模拟信号的频谱分析
用DFT对时域离散信号进行频谱分析

用DFT对时域离散信号进行频谱分析DFT(离散傅里叶变换)和FFT(快速傅里叶变换)是用于对时域离散信号进行频谱分析的常用方法之一、在本文中,我将介绍DFT和FFT的原理和应用,并探讨它们的优势和劣势。
频谱分析是一种研究信号频率成分的方法。
它可以用于分析信号的频域特征,例如信号频谱的幅度和相位信息。
频谱分析广泛应用于通信、声学、图像处理、金融等领域。
DFT是傅里叶变换在时域离散信号上的一种离散形式。
傅里叶变换将信号从时域转换到频域,使我们能够分析信号包含的不同频率的成分。
DFT计算离散信号的系数,这些系数表示了信号在不同频率上的幅度和相位信息。
DFT的计算复杂度为O(N^2),其中N是信号的长度。
这意味着DFT对于长时间序列的计算是非常昂贵的。
为了解决DFT计算复杂度高的问题,人们引入了FFT算法。
FFT是一种基于DFT的快速算法,可以大大提高计算效率。
FFT的计算复杂度为O(NlogN)。
当信号的长度是2的幂次时,FFT的计算速度尤为快速。
FFT算法利用了傅里叶变换中的对称和周期性特性,通过分治法将DFT计算分解成多个小规模的DFT计算,从而加快了计算速度。
FFT算法有多种变体,包括Cooley-Tukey算法、Gentleman-Sande算法等。
使用DFT和FFT进行频谱分析有很多应用。
其中一种常见的应用是信号滤波。
通过分析信号的频谱,我们可以确定信号中所包含的不同频率的成分,从而选择性地滤除或增强一些频率的信号成分。
另一种应用是频谱分析可用于频率识别。
通过观察信号频谱的峰值和分布情况,我们可以确定信号的主要频率成分,从而进行信号的识别和辨别。
尽管DFT和FFT在频谱分析中非常有用,但它们也存在一些局限性。
首先,这些方法假设信号是离散、周期且稳定的。
对于非周期信号和突发信号,DFT和FFT的结果可能会产生混淆或误导。
其次,DFT和FFT的分辨率取决于采样率和信号长度,这可能会导致频域分辨率较低。
利用DFT分析离散信号频谱

实验四利用DFT分析离散信号频谱实验要求:应用傅里叶变换DFT,分析各种离散信号x(k)的频谱。
实验原理:1.离散周期信号离散周期信号可以展开成傅里叶级数,其中傅里叶系数如下式所示式中:N是信号的周期,n为时间离散变量,k为数字频率离散变量,是k次谐波的数字频率。
由于所以离散周期信号的频谱是一个以为周期的周期性离散频谱,各谱线之间的间隔为,而且存在着谐波的关系。
2.离散非周期信号通过离散时间傅里叶变换(DTFT)可求得非周期序列的频谱密度函数,即是数字频率的连续函数。
从式中可见,离散非周期信号的频谱结构是连续的且具有以为周期的周期性。
类似于对连续信号的谱分析,可以使用MA TLAB提供的fft函数计算离散周期信号和离散非周期信号的频谱。
对于离散周期信号,只要对其一个周期内的N点做fft,就可准确地计算得其频谱。
分析步骤:(1)确定离散周期序列的基本周期N;(2)使用fft命令作N点FFT计算X[k]。
频率分辨率。
(3)。
对于离散非周期信号,当序列长度有限时,可以求得准确的频谱样值。
若序列很专或无限长,则由于截短必然产生泄漏误差以及混叠误差,使计算的结果只能是频谱样值的近似值。
求解步骤:(1)确定序列的长度L。
根据能量分布,当序列为无限长需要进行截短。
(2)确定作FFT的点数N;根据频域取样定理,为使时域波形不产生混叠必须取L≥N;(3)使用fft命令作N点FFT计算X[k]。
三、实验内容:1.利用FFT计算信号的频谱;2.利用FFT计算信号的频谱;要求:(1)确定DFT计算的各参数;(2)进行理论值与计算值比较,分析各信号频谱分析的计算精度;(3)详细列出利用DFT分析离散信号频谱的步骤;(4) 写出实验原理。
1. 利用FFT计算信号的频谱(查看源文件)2、利用FFT计算信号的频谱(查看源文件)思考题:1)既然可以直接计算DTFT,为什么利用DFT分析离散信号频谱?答:离散序列的DTFT是连续的周期函数,不适合计算机进行计算,而序列的DFT本身是一个序列,因此特别适合计算机进行计算。
理解DFT

理解DFT离散傅里叶变换(Discrete Fourier Transform,DFT)是数字信号处理(DSP)领域中一种重要的数学工具,它可以将一个离散序列转换为一组复数系数,表示了这个序列在频域上的频率成分。
DFT的基本原理是将一个长度为N的离散序列进行周期延拓,并将其分解成N个基频为1/N的正弦和余弦函数。
它可以看作是连续傅里叶变换(CFT)的一个离散化版本,将连续信号在时域上采样得到的离散信号在频域上进行分析。
DFT的数学表达式为:X(k) = Σ(x(n) * exp(-j * 2π * nk / N))其中X(k)为频域上的复数系数,表示了信号在不同频率分量上的幅度和相位;x(n)为时域上的离散信号;k为频域上的频率索引,取值范围为0到N-1;N为序列的长度。
通过计算DFT,可以得到信号在频域上不同频率分量的幅度和相位信息。
DFT的输出是一个复数序列,其中实部表示对应频率上的幅度,虚部表示对应频率上的相位。
可以用幅度谱和相位谱来表示信号在频域上的性质。
DFT的应用十分广泛,特别是在信号分析、通信系统、图像处理和音频处理等领域。
以下是DFT的几个常见应用:1.频谱分析:通过计算DFT,可以将信号从时域转换到频域,从而得到信号的频谱信息。
频谱分析可以用于信号的特征提取、频率成分的识别和滤波器的设计等方面。
2.信号压缩:DFT可以将信号从时域转换到频域,在频域上对信号进行压缩处理,去除一些频率成分上的冗余信息。
这样可以实现信号的压缩存储和传输,提高对信号的处理效率。
3.图像处理:图像可以看作是一个二维离散信号,通过对图像的每个像素进行DFT计算,可以将图像从空域转换到频域上进行处理。
在图像处理中,DFT经常用于图像滤波、图像压缩和图像增强等应用。
4.音频处理:声音可以看作是一个一维离散信号,在音频处理中,通常通过对声音信号进行DFT计算,得到声音的频谱信息,可以用于音频的降噪、声音特征提取、声音合成等方面。
应用MATLAB对信号进行频谱分析

应用MATLAB对信号进行频谱分析信号的频谱分析是一种重要的信号处理方法,可以帮助我们深入了解信号的频域特性。
MATLAB作为一种强大的科学计算软件,提供了丰富的工具和函数来进行频谱分析。
在MATLAB中,频谱分析可以使用多种方法来实现,包括离散傅立叶变换(DFT)、快速傅立叶变换(FFT)等。
下面将介绍几种常用的频谱分析方法及其在MATLAB中的应用。
1.离散傅立叶变换(DFT)离散傅立叶变换是将信号从时域转换到频域的一种方法。
在MATLAB 中,可以使用fft函数进行离散傅立叶变换。
例如,假设我们有一个长度为N的信号x,可以通过以下代码进行频谱分析:```matlabN = length(x);X = fft(x);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```以上代码将信号x进行离散傅立叶变换,并计算频谱的幅度谱(P),然后根据采样频率和信号长度计算频率轴。
最后使用plot函数绘制频谱图。
2.快速傅立叶变换(FFT)快速傅立叶变换是一种高效的离散傅立叶变换算法,可以在较短的时间内计算出频谱。
在MATLAB中,fft函数实际上就是使用了快速傅立叶变换算法。
以下是使用FFT进行频谱分析的示例代码:```matlabN = length(x);X = fft(x);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```3.窗函数窗函数可以改善频谱分析的效果,常见的窗函数有矩形窗、汉宁窗、汉明窗等。
在MATLAB中,可以使用window函数生成窗函数,然后将窗函数和信号进行乘积运算,再进行频谱分析。
以下是使用汉宁窗进行频谱分析的示例代码:```matlabN = length(x);window = hann(N);xw = x.*window';X = fft(xw);fs = 1000; % 采样频率f = fs*(0:(N/2))/N;P = abs(X/N).^2;plot(f,P(1:N/2+1))```以上代码通过生成一个汉宁窗,并将窗函数与信号进行乘积运算得到xw,然后将xw进行频谱分析。
用DFT(FFT)对连续信号进行频谱分析

电子信息工程系实验报告课程名称:数字信号处理Array实验项目名称:用DFT(FFT)对连续信号进行频谱分析实验时间:班级:通信姓名: xxp 学号:一、实验目的:1.掌握用DFT(FFT)对模拟信号进行谱分析的方法,理解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
2.熟悉应用FFT实现两个序列的线性卷积的方法。
二、实验原理:1.用DFT(FFT)对连续信号进行频谱分析用DFT(FFT)对模拟信号做谱分析是一种近似的谱分析。
首先一般的模拟信号(周期信号除外)的频谱是连续谱,而用FFT做谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。
另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。
最后要注意一般的模拟信号是无限长的,分析时要截断,截断的长度与对模拟信号进行频谱分析的分辨率有关。
如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍,如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。
在运用DFT(FFT)对模拟信号进行谱分析的过程中主要可能产生以下三种误差:(1) 混叠现象对模拟信号进行谱分析时首先要对其采样,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原模拟信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。
(2) 截断效应实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DFT在信号频谱分析中的应用目录Ⅰ.设计题目 (1)Ⅱ.设计目的 (1)Ⅲ.设计原理 (1)Ⅳ.实现方法 (1)Ⅴ.设计内容及结果 (5)Ⅵ.改进及建议 (11)Ⅶ.思考题及解答 (14)Ⅷ.设计体会及心得 (15)Ⅸ.参考文献 (16)Ⅰ.设计题目DFT 在信号频谱分析中的应用Ⅱ.设计目的掌握离散傅里叶变换的有关性质,利用Matlab 实现DFT 变换。
了解DFT 应用,用DFT 对序列进行频谱分析,了解DFT 算法存在的问题及改进方法。
学习并掌握FFT 的应用。
Ⅲ.设计原理所谓信号的频谱分析就是计算信号的傅里叶变换。
连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制,而DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离散信号和系统的有力工具。
工程实际中,经常遇到的连续信号Xa(t),其频谱函数Xa(jW)也是连续函数。
数字计算机难于处理,因而我们采用DFT 来对连续时间信号的傅里叶变换进行逼近,进而分析连续时间信号的频谱。
Ⅳ.实现方法离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。
快速傅里叶变换(FFT )并不是一种新的变换,它是离散傅里叶变换的一种快速算法,并且主要是基于这样的思路而发展起来的:(1)把长度为N 的序列的DFT 逐次分解成长度较短的序列的DFT 来计算。
(2)利用WN(nk)的周期性和对称性,在DFT 运算中适当的分类,以提高运算速度。
(对称性nkNnk NW W N-=+2,12-=NN W ;周期性nkN nk N nrN N k rN n NW W W W ---==)(,r 为任意整数,1=nrNN W )离散傅里叶变换的推导:离散傅里叶级数定义为nk j N k p p ek x Nn x N21)(1)(π∑-==(1-1) 将上式两端乘以nm j Neπ2-并对n在0~N-1求和可得⎥⎦⎤⎢⎣⎡==∑∑∑∑∑-=---=-=-=---=-10)(110101)(1N2N2N2)()(1)(N n m k n j N N k p N n N k m k n j pN n nm j pe k X ek XNen xπππ 因为{m k 1mk 0)(N )(1)(N 2N2N2-1-1N 11=≠---=-==∑m k j m k j N n m k n je eeNπππ所以∑∑-=-=--=110)()()(N2N k p N n nm j p m k k X en x δπ 这样∑-=-=10N2)()(N n nm j p p en x m X π用k 代替m 得∑-=-=1N2)()(N n nk j p P en x k X π(1-2)令N2πj N eW -=则(1-2)成为DFS []∑-===10)()()(N n nkN p p p W n x k X n x (1-3)(1-1)成为IDFS []∑-=-==1)(1)()(N n nkN pp p W k XNn x k X (1-4)式(1-3)、(1-4)式构成周期序列傅里叶级数变换关系。
其中)()(k X n x p p 、都是周期为N 的周期序列,DFS[·]表示离散傅里叶级数正变换,IDFS[·]表示离散傅里叶级数反变换。
习惯上,对于长为N 的周期序列,把0≤n ≤N-1区间称为主值区,把)1(~)0(-N x x p p 称为)(n x p 的主值序列,同样也称)1(~)0(-N X X p p 为)(k X p 的主值序列。
由于)()()(n R n x n x N p =,对于周期序列)(n x p 仅有N 个独立样值,对于任何一个周期进行研究就可以得到它的全部信息。
在主值区研究)(n x p 与)(n x 是等价的,因此在主值区计算DFS 和DFT 是相等的,所以DFT 计算公式形式与DFS 基本相同。
其关系为)()()(n R n x n x N p = )()()(k R k X k X N p =所以离散傅里叶正变换()()[]()W nkN N n n x n x DFT k X ∑-===10≤k ≤N-1离散傅里叶变换(DFT )定义:设有限长序列x (n) 长为N (0≤n ≤N-1),其离散傅里叶变换是一个长为N 的频率有限长序列(0≤k ≤N-1),其正变换为()()[]()W nkN N n n x n x DFT k X ∑-===100≤k ≤N-1 (WeNjN π2-=)离散傅里叶变换的实质是:把有限长序列当做周期序列的主值序列进行DFS 变换,x(n)、X(k)的长度均为N ,都是N 个独立值,因此二者具有的信息量是相等的。
已知x(n)可以唯一确定X(k),已知X(k)可以唯一确定x(n)。
虽然离散傅里叶变换是两个有限长序列之间的变化,但它们是利用DFS 关系推导出来的,因而隐含着周期性。
构造离散傅里叶变换的Matlab 实现程序如下:function[Xk]=dft(xn,N) n=[0:1:N-1]; k=n;WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk快速傅里叶变换(FFT )并不是与DFT 不同的另外一种变换,而是为了减少DFT 计算次数的一种快速有效的算法共轭对称性:设有限长序列)(n x 的长度为N ,以N 为周期的周期延拓列为N n x n x ))(()(~= 周期序列)(~n x 的共轭对称分量)(~n x e 和共轭反对称分量)(~n x o 分别为[]N N e n N x n x n x n x n x ))(())((21)()(21)(**~~~-+=⎥⎦⎤⎢⎣⎡-+= (1-5)[]N N o n N x n x n x n x n x ))(())((21)()(21)(**~~~--=⎥⎦⎤⎢⎣⎡--= (1-6)同样可以证明,它们满足)()(*~~n x n x e e -= (1-7) )()(*~~n x n x o o --= (1-8) 则有限长序列)(n x 的圆周共轭对称分量)(n x ep 和圆周共轭反对称分量)(n x op 分别定义为:)(]))(())(([21)()()(*~n R n N x n x n R n x n x N N N N e ep -+== (1-9))(]))(())(([21)()()(*~n R n N x n x n R n x n x N N N N o op --== (1-10)由于满足)()()(~~~n x n x n x o e += 故)()()()]()([)()()(~~~n x n x n R n x n x n R n x n x op ep N e N +=+== (1-11)显然,长度为N 的有限长序列)(n x 可以分解为圆周共轭对称分量)(n x ep 和圆周共轭反对称分量)(n x op 之和,)(n x ep 和)(n x op 的长度皆为N 。
利用有限长序列与周期序列的共轭对称分量和反对称分量的关系式(1-9)和式(1-10),以及式(1-11)可以推导出DFT 的一系列的对称性质(1)DFT )()()]([***K n X k X n x -=-= 式中)(*n x 表示)(n x 的共轭复序列。
证明:DFT )()()()]([*1010**k X W n x Wn x n x N n N n nk N nk N-=⎥⎦⎤⎢⎣⎡==∑∑-=-= 又因为12)(N 2===--nj nNj nNN e e W ππ 所以DFT )()()]([**10)(*k N X W n x n x N n n k N N-=⎥⎦⎤⎢⎣⎡=∑-=-(2)复序列实部的DFT 等于DFT 的圆周共轭对称部分,即DFT )]()([21)()]}({Re[*k N X k X k X n x ep -+==证明:DFT =)]}({Re[n x DFT )]}()([{*21n x n x +=21{DFT )]([n x +DFT )]([*n x }=)()]()([*21k X k N X k X ep =-+利用DFT 的对称性可求得n 0cos ω的DFT: 设n j e n j n n x 000sin cos )(ωωω=+= 则 DFT kNo j oNj kNo j NkN N o j W e e N n W e W e nk N n j W e k X n x ωωωωω---=--====∑111110)()]([因为 )](Re[cos 0n x n =ω 所以DFT =][cos 0n ωDFT 2)()(*)()]}({Re[k N X k X ep k X n x -+===kNk N kN k N k NW o j e No j e k NW o j e No j e W W N W W N 200001111cos 21)1cos(cos cos 12][+--+--+=------ωωωωωωωωⅤ.设计内容及结果1. 用MATLAB 语言编写计算序列x(n)的N 点DFT 的m 函数文件dft.m 。
并与MATLAB 中的内部函数文件fft.m 作比较。
解: x (n) 的N 点DFT 的m 函数文件dft.m function[Xk]=dft(xn,N) n=[0:1:N-1]; k=n;WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnkMatlab 中的内部函数文件fft.m 文件 function [varargout] = fft(varargin) if nargout == 0builtin('fft', varargin{:}); else[varargout{1:nargout}] = builtin('fft', varargin{:}); end运算量估计:对于N=M 2点序列进行时间抽选奇偶分解FFT 计算,需分M 级,每级计算N/2个蝶。
每一级需N/2次复乘、N 次复加,因此总共需要进行: 复乘:N M NN 222log =复加:N N NM 2log =直接计算N 点的DFT ,需要2N 次复乘、N(N-1)次复加。
N 值越大,时间抽选奇偶分解FFT 算法越优越。
例如当N=2048点时,时间抽选奇偶分解FFT 算法比直接计算DFT 速度快300多倍可以用一下Matlab 程序比较DFT 和FFT 的运算时间 N=2048;M=11;x=[1:M,zeros(1,N-M)]; t=cputime; y1=fft(x,N); Time_fft=cputime-t t1=cputime; y2=dft(x,N); Time_dft=cputime-t1 t2=cputime; 运行结果: Time_fft =0.0469Time_dft =15.2031由此可见FFT 算法比直接计算DFT 速度快得多2. 对离散确定信号 ()cos(0.48)cos(0.52)x n n n ππ=+ 作如下谱分析: 截取()x n 使()x n 成为有限长序列N(0≤≤n N -1),(长度N 自己选)写程序计算出()x n 的N 点DFT ()X k ,画出时域序列图xn ~n 和相应的幅频图()~X k k 。