离散傅里叶变换DFT

对DFT相关的内容做一个梳理。

傅里叶变换(FT)

在学习信号处理的过程中,我们最早接触的是时域连续信号的傅里叶变换:
X ( j Ω ) = ∫ − ∞ + ∞ x ( t ) e − j Ω t d t X(j\Omega) = \int_{-\infty}^{+\infty} x(t)e^{-j\Omega t}dt X(jΩ)=+x(t)ejΩtdt

而在实际应用中,经常接触到的是序列,即时域离散信号。我们可以把上式中的积分变为求和,自然而然地得到时域离散信号的傅里叶变换:
X ( e j ω ) = ∑ n = − ∞ + ∞ x ( n ) e − j ω n X(e^{j\omega}) =\sum_{n = -\infty}^{+\infty}x(n)e^{-j\omega n} X(e)=n=+x(n)ejωn

需要注意的是, X ( e j ω ) X(e^{j\omega}) X(e)具有 2 π 2\pi 2π周期性。 ω = 0 \omega=0 ω=0处代表低频, ω = π \omega=\pi ω=π处代表高频(这个下面会有解释)。

离散傅里叶变换(DFT)

上述时域离散信号的FT在频域上是连续的,这样对于计算机来说还是不能处理。这时候,DFT诞生了。设序列 x ( n ) x(n) x(n)长度为M,它的N点DFT为:
X ( k ) = ∑ n = 0 N − 1 x ( n ) e − j 2 π N k n , k = 0 , 1 , . . . , N − 1 X(k) =\sum_{n = 0}^{N - 1}x(n)e^{-j\frac{2\pi}{N}kn},\quad k=0, 1, ..., N-1 X(k)=n=0N1x(n)ejN2πkn,k=0,1,...,N1

要求 N ≥ M N\ge M NM(原因见下文)。而 x ( n ) x(n) x(n)的傅里叶变换为: X ( e j ω ) = ∑ n = − ∞ + ∞ x ( n ) e − j ω n = ∑ n = 0 N − 1 x ( n ) e − j ω n X(e^{j\omega}) =\sum_{n = -\infty}^{+\infty}x(n)e^{-j\omega n}=\sum_{n=0}^{N-1}x(n)e^{-j\omega n} X(e)=n=+x(n)ejωn=n=0N1x(n)ejωn可以看出, { X ( k ) } \{X(k)\} {X(k)} X ( e j ω ) X(e^{j\omega}) X(e) [ 0 , 2 π ] [0, 2\pi] [0,2π]上的等间隔采样。(因为FT具有 2 π 2\pi 2π周期性,所以在 [ 0 , 2 π ] [0, 2\pi] [0,2π]上采样就够了)

采样定理

时域采样定理

时域采样定理是这样的:

对模拟信号 x a ( t ) x_a(t) xa(t)进行时域等间隔理想采样(冲激采样),则理想采样信号 x ^ a ( t ) \hat x_a(t) x^a(t)的频谱是原模拟信号频谱以采样频率为周期周期延拓。对于带限信号,当采样频率大于2倍信号频率时,可以由采样信号无失真恢复原模拟信号。

上述采样定理针对的是理想采样,这在现实中不可实现。实际中采用的是时域离散采样,即 x ( n ) = x a ( n T ) x(n) = x_a(nT) x(n)=xa(nT)(注意:理想采样 x ^ a ( t ) \hat x_a(t) x^a(t)仍是模拟信号,而 x ( n ) x(n) x(n)时域离散信号)。 x ( n ) x(n) x(n)的傅里叶变换 X ( e j ω ) X(e^{j\omega}) X(e) x a ( t ) x_a(t) xa(t)的傅里叶变换 X ( j Ω ) X(j\Omega) X(jΩ)的关系为:
X ( e j ω ) = 1 / T × ∑ k = − ∞ + ∞ X a ( j Ω − j k Ω s ) X(e^{j\omega})=1/T\times\sum_{k=-\infty}^{+\infty}X_a(j\Omega-jk\Omega_s) X(e)=1/T×k=+Xa(jΩjkΩs)

其中, Ω s = 2 π / T = 2 π F s \Omega_s=2\pi/T=2\pi F_s Ωs=2π/T=2πFs ω = Ω T \omega=\Omega T ω=ΩT

X ( e j ω ) X(e^{j\omega}) X(e) ω \omega ω的函数, X a ( j Ω ) X_a({j\Omega}) Xa(jΩ) Ω \Omega Ω的函数,二者之间通过一个坐标变换 ω = Ω T \omega=\Omega T ω=ΩT 联系在了一起。也就是说,时域离散采样信号的频谱是模拟信号频谱以 Ω s \Omega_s Ωs为周期做周期延拓之后,再在横轴上做一个伸缩变换,再乘以一个系数得到的。

同理,对于时域离散采样,也要满足采样频率大于2倍信号频率,才能避免频谱混叠。

根据 ω = Ω T \omega=\Omega T ω=ΩT ω = 2 π \omega=2\pi ω=2π对应于 Ω = Ω s \Omega=\Omega_s Ω=Ωs ω = π \omega=\pi ω=π对应于 Ω = Ω s / 2 \Omega=\Omega_s/2 Ω=Ωs/2 Ω s / 2 \Omega_s/2 Ωs/2是折叠频率,这就是为什么说 ω = π \omega=\pi ω=π对应于高频部分了。

进一步地,如果 x ( n ) x(n) x(n)有限长(当然频域就无限长了),那么对 x ( n ) x(n) x(n)做DFT,就相当于对原模拟信号频谱的周期延拓在 [ 0 , Ω s ] [0, \Omega_s] [0,Ωs]上等间隔采样!

频域采样定理

对任意序列 x ( n ) x(n) x(n)的傅里叶变换 X ( e j ω ) X(e^{j\omega}) X(e),在 [ 0 , 2 π ] [0, 2\pi] [0,2π]上等间隔采样,得到 X ~ N ( k ) \tilde X_N(k) X~N(k)(这里不限制k的取值范围)。可以知道, X ~ N ( k ) \tilde X _N(k) X~N(k)是以N为周期的序列。根据离散傅里叶级数理论, X ~ N ( k ) \tilde X_N(k) X~N(k)必然是某个周期序列 x ~ N ( n ) \tilde x_N(n) x~N(n)的DFS。通过推导可知, x ~ N ( n ) \tilde x_N(n) x~N(n)是原序列 x ( n ) x(n) x(n)以N为周期的周期延拓。分别取 X ~ N ( k ) \tilde X_N(k) X~N(k) x ~ N ( n ) \tilde x_N(n) x~N(n)的主值序列 X N ( k ) X_N(k) XN(k) x N ( n ) x_N(n) xN(n),二者构成一对DFT。

从而可以得到频率采样定理:设序列 x ( n ) x(n) x(n)长度为M,对 X ( e j ω ) X(e^{j\omega}) X(e) [ 0 , 2 π ] [0, 2\pi] [0,2π]上N点等间隔采样(也就是做N点DFT),仅当 N>=M 时,才能由 X N ( k ) X_N(k) XN(k)通过IDFT恢复 x ( n ) x(n) x(n),避免混叠。

对比:
时域采样定理要求信号频率有限;频率采样定理要求序列长度有限。

MATLAB中fft的使用

一、定义信号,注意几个关键量:

Fs = 1000;            % 采样频率   
T = 1/Fs;             % 采样间隔
L = 1500;             % 序列长度
t = (0:L-1)*T;        % 时间向量
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 		% 两个正弦信号(S是有限长的,可以看成无限长信号加窗)
X = S + 2*randn(size(t));			% 加噪声

二、傅里叶变换

Y = fft(X);			% 得到的是原信号频谱在[0, Fs]上的L点等间隔采样
P2 = (abs(Y/L)).^2;				% 功率谱(这个为什么要除以L,请看下面解释)
P1 = P2(1:L/2+1);		% 实信号的FT是共轭对称的,我们只看半边!
P1(2:end) = 2*P1(2:end);	% 由于是单边谱,所以乘2(除直流分量外)
f = Fs*(0:(L/2))/L;				% 频率轴,采样间隔是Fs/L,频率范围是[0, Fs/2]
plot(f,P1) 

这里有一个疑问是:为什么要对fft得到的结果除以L,按照时域采样定理那一部分的结论:
X ( e j ω ) = 1 / T × ∑ k = − ∞ + ∞ X a ( j Ω − j k Ω s ) X(e^{j\omega})=1/T\times\sum_{k=-\infty}^{+\infty}X_a(j\Omega-jk\Omega_s) X(e)=1/T×k=+Xa(jΩjkΩs)

我们似乎应该对fft的结果乘以T,也就是除以Fs,才能得到原频谱。实际上,除以Fs和除以L都是正确的,这取决于我们的目的是什么。如果要得到原信号的幅度谱,则应该除以Fs;如果要得到功率谱,则应该除以L。参考

  • 34
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 离散傅里叶变换DFT)是指将一个离散的信号序列转换为其频域表示的过程。它把一个有限长的离散序列映射到一个有限长的频域序列。 离散傅里叶变换是傅里叶变换在离散输入上的推广。它将一个长度为N的离散序列转换为一个长度为N的频域序列。在时域上,输入序列可以表示为离散时间的采样点集合。在频域上,它表示了输入信号的不同频率成分的幅度和相位。 离散傅里叶变换的计算过程包括两个步骤:首先,通过线性组合计算正弦和余弦函数的离散采样来表示信号;然后,再次对这些离散采样应用傅里叶变换公式以得到频域表示。 离散傅里叶变换广泛应用于信号处理和图像处理等领域。它可以用于频域滤波、快速傅里叶变换(FFT)、频谱分析等。通过DFT,我们能够将一个时域上的信号转换为其频域表示,从而能够更好地理解和处理信号的频率特性。 尽管离散傅里叶变换可以通过直接计算实现,但其计算复杂度较高,特别是对于较长的输入序列。快速傅里叶变换(FFT)是一种高效的算法,能够在O(NlogN)时间复杂度内计算离散傅里叶变换,其被广泛应用于实际应用中。 总之,离散傅里叶变换是将离散序列转换为其频域表示的过程,通过DFT我们可以了解信号的频率特性,并在信号处理中得到广泛应用。 ### 回答2: 离散傅里叶变换DFT)是将离散时间域信号转换成频域信号的一种数学变换方法。在信号处理和图像处理领域中广泛应用。 DFT的基本原理是将一个离散时间域信号分解为一系列复数的正弦和余弦函数分量,表示信号在不同频率上的振幅和相位信息。通过DFT,我们可以得到信号的频率特性,如频谱图、频率分量以及它们在时间上的实现方式。 DFT的计算是通过对输入信号的N个离散采样点进行离散傅里叶变换公式的运算得到的。公式可以描述为: X[k] = Σ(n=0 to N-1) x[n] * W^(-kn) 其中,X[k]表示输出频域信号的第k个频率分量,x[n]表示输入的时间域信号的第n个采样点,N表示信号的采样点数,W为复数旋转因子,定义为W = e^(-j2π/N)。 DFT计算的复杂度是O(N^2),这意味着当信号的采样点数增加时,计算所需的时间也会呈平方倍数增长。为了提高计算效率,可以使用快速傅里叶变换(FFT)算法,将计算复杂度降低到O(NlogN)的级别。 通过DFT,我们可以从时域的输入信号中得到其频域的频谱信息,进而可以进行频域滤波、频谱分析、频率特征提取等一系列信号处理操作。此外,DFT还广泛应用于音频处理、图像处理、通信系统等领域中。 ### 回答3: 离散傅里叶变换(Discrete Fourier Transform,DFT)是一种将离散序列(通常是时域上的信号)转换为频域上的表示的数学工具。它是傅里叶变换在离散信号上的推广。 DFT将一个长度为N的离散序列X={x_0, x_1, x_2, ..., x_{N−1}}转换为其频域表示X'={X_0, X_1, X_2, ..., X_{N−1}}。其中,X_k是X的第k个频谱系数,k=0,1,2,...,N−1。DFT的数学公式是: X_k = ∑_{n=0}^{N−1} x_n * exp(−2πikn/N),k=0,1,2,...,N−1。 DFT将一个信号分解为一系列正弦和余弦波的和,这些波的频率从0到N-1,每个波的振幅由X_k决定。相反地,逆DFT(IDFT)可以从频域表示恢复出原始的时域序列。 DFT的应用十分广泛。对于信号处理,DFT可以用于频域滤波、谱分析和频谱合成等。在通信系统中,DFT被广泛应用于正交频分复用(OFDM)技术,其中信号在频域上被划分为多个子载波进行传输,利用DFT实现时域与频域之间的转换。此外,DFT还被应用于图像处理、声音合成、压缩和音频编码等领域。 尽管DFT是一种强大的工具,它的计算复杂度较高,特别是对于大规模的输入序列。为了解决这个问题,人们发展出了快速傅里叶变换(Fast Fourier Transform,FFT)算法,它通过利用DFT的对称性和周期性,将计算复杂度从O(N^2)降低到O(NlogN)。FFT广泛应用于实际工程中,提高了计算效率。 总结来说,DFT是将离散序列转换为频域表示的数学工具,广泛应用于信号处理、通信系统、图像处理等领域。它的计算复杂度较高,但通过FFT等算法可以得到高效的计算方法,为实际应用提供了便利。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值