☰
傅里叶变换四种形式:FS、FT、DTFT、DFT一次讲清
2026/9/30 19:47:41 网站建设 项目流程

最近在带几个刚入门信号处理方向的新人,他们几乎绕不开同一个困惑:傅里叶变换到底有多少种形式?翻开教材,傅里叶级数(FS)、傅里叶变换(FT)、离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)扑面而来,公式长得像,名字还特别像,一不留神就混了。

我当年也是被这四个名字折腾过的人。后来想通了一件事:它们根本不是四个独立的数学工具,而是同一个傅里叶思想在不同信号形态下的四种投影。把这条主线抓住,FS、FT、DTFT、DFT之间的关系就清晰得像一张地图。这篇文章就按这条主线来写,把四种形式的分类逻辑、核心公式、典型变换对、常见工程陷阱一次讲完,尤其是三角脉冲的傅里叶变换怎么记,我会给出几个亲测好用的记忆方法,适合正在啃信号与系统、数字信号处理,或者刚开始用FFT做频谱分析的朋友。

1. 四种形式怎么分类:抓住时域和频域的两对性质

1.1 一张表看懂四种形式的位置

判断一个信号该用哪种傅里叶形式,不需要背,只需要问两个问题:时域信号是连续的还是离散的?时域信号是周期的还是非周期的?

把这两个维度交叉一下,正好得到四种组合,分别对应四种傅里叶形式:

时域信号形态连续、非周期连续、周期离散、非周期离散、周期
变换名称傅里叶变换(FT)傅里叶级数(FS)离散时间傅里叶变换(DTFT)离散傅里叶变换(DFT)
频域形态连续、非周期离散、非周期连续、周期离散、周期
典型场景理论推导、模拟信号分析周期信号的谐波分解序列分析、数字滤波器设计FFT计算、频谱分析

这张表的核心就是傅里叶变换理论里那两句“对偶关系”:时域周期,频域离散;时域离散,频域周期。后文所有公式和工程现象都从这两句话来。只要把这两句话刻在脑子里,四种形式的位置就永远不会搞乱。

1.2 时域连续与离散的本质区别

时域连续,意味着信号在每个时刻都有定义,变换的时候用积分;时域离散,意味着信号只在整数采样点上存在,变换的时候用求和。这是FS/FT和DTFT/DFT在公式形式上的分界线。

时域周期与非周期,则决定频域是离散谱线还是连续谱密度。周期信号分解出来是一根一根的谱线,对应各个谐波频率;非周期信号的频谱是一段连续的曲线,代表能量在频率轴上的密度分布。

把这两对性质放在一起,就能直观理解为什么DFT的频域输出是一堆离散的X[k],而FT的频域输出是连续函数X(ω)。DFT的输入本来就是离散且周期化的序列,所以输出自然离散且周期化。这也是计算机里只能跑DFT、不能直接跑FT的根本原因。

提示:判断一个信号属于哪种形式,先看时域,再看频域。时域周期还是非周期、连续还是离散,这两个问题决定了变换公式长什么样,也决定了频谱画出来是点、是线、还是连续曲线。

2. 四种形式的公式与工程语义

2.1 FS:周期信号分解成一堆旋转向量

周期信号是第一种要处理的信号。假设x(t)以周期T0重复,基波角频率ω0=2π/T0,那么它可以分解为一系列谐波的叠加:

x(t) = Σ_{k=-∞}^{∞} X_k e^{jkω0 t}

其中傅里叶系数:

X_k = (1/T0) ∫_{T0} x(t) e^{-jkω0 t} dt

这里积分区间取任意一个完整周期T0就行。每个X_k都代表频率kω0处的复振幅,包含幅度和相位。k=0对应直流分量,k=±1对应基波,k=±2对应二次谐波,依此类推。

工程里做谐波分析,比如分析电网谐波、机械振动信号,用的就是FS的思路。周期性是前提,频谱输出是一根根离散谱线,谱线间距就是基波频率ω0。信号周期越大,谱线越密;周期趋向无穷大,谱线密到连成一片,FS就自然过渡到FT。

2.2 FT:把周期拉长到无穷,谱线变成谱密度

当信号的周期T0趋于无穷大,信号不再重复,变成单个非周期脉冲。这时谱线间距ω0趋于无穷小,离散的X_k退化成连续的X(ω),FS的求和退化成FT的积分:

X(ω) = ∫_{-∞}^{∞} x(t) e^{-jωt} dt

逆变换:

x(t) = (1/2π) ∫_{-∞}^{∞} X(ω) e^{jωt} dω

注意,这里的X(ω)不再是某个频率点的幅度,而是频谱密度,单位是幅度除以角频率。这也是为什么FT的结果经常出常数π、1/2π这些因子,本质上都是密度化带来的尺度变化。

FT对应的是连续非周期信号,理论分析几乎离不开它。模拟滤波器频率响应、调制解调的频谱搬移、匹配滤波器的传递函数,全部建立在这组公式上。但FT有个工程难点:积分区间从负无穷到正无穷,信号又是连续的,计算机没法直接算,所以实际数值计算要绕到DFT那边去。

2.3 DTFT:序列的频谱为什么一定是周期的

把连续时间信号x(t)按采样周期Ts抽样,得到离散序列x[n]=x(nTs)。离散后的序列依然可以定义频谱,但积分变成求和:

X(e^{jω}) = Σ_{n=-∞}^{∞} x[n] e^{-jωn}

这里的ω是数字角频率,和模拟角频率Ω的关系是ω=Ω·Ts。很多人第一次看到这个公式会问:为什么用e^{jω},不是e^{jωn}就已经算完了?关键在于频域的周期性问题。

因为对任意ω,都有e^{-j(ω+2π)n}=e^{-jωn},所以X(e^{jω})天然是以2π为周期的周期函数。这正是“时域离散,频域周期”的体现。采样让频谱以采样率fs为周期重复,原本连续信号频谱如果最高频率超过fs/2,重复的频谱就会叠在一起,这就是混叠。

DTFT的频域是连续的,这导致它也没法直接在计算机里精确计算。计算机能算的,是把它进一步离散化之后的DFT。

2.4 DFT:计算机唯一能直接算的傅里叶变换

要让频谱既离散又有限长,才能在计算机里做数值计算。对长度为N的序列x[n],n=0,1,...,N-1,做周期延拓后取一个周期,频域同样离散成N个点:

X[k] = Σ_{n=0}^{N-1} x[n] e^{-j2πkn/N}, k=0,1,...,N-1

逆变换:

x[n] = (1/N) Σ_{k=0}^{N-1} X[k] e^{j2πkn/N}

DFT的时域序列和频域序列都是有限长离散的,所以适合计算机处理。但要注意,DFT的数学定义里隐含了“x[n]是周期信号的一个周期”这一假设,时域被周期延拓,频域也被周期延拓。

FFT只是DFT的一种快速算法,不是新的变换。工程里用FFT算出来的X[k],本质上就是DFT的结果。很多人以为FFT是独立的一套理论,其实它只是把DFT的重复乘法运算组织成了蝶形运算,复杂度从O(N²)降到O(NlogN),结果和DFT一模一样。

提示:四种形式的递进关系是:FS把周期信号拆成谱线,FT把非周期信号变成连续谱,DTFT处理离散序列得到周期频谱,DFT把DTFT的频谱又抽样成有限离散点。核心线路是:周期化、离散化。

3. 必背变换对与三角脉冲记忆方法

3.1 常用变换对速查表

学傅里叶变换离不开典型变换对。这些变换对就像是数学里的乘法口诀,背不下来后面推导什么都费劲。我最常给新人推荐的几张“卡”:

时域信号傅里叶变换记忆要点
冲激函数 δ(t)1时域最窄,频域最宽
常数 12πδ(ω)时域最宽,频域最窄
矩形脉冲 rect(t/T)T·Sa(ωT/2)矩形对应抽样函数
三角脉冲 tri(t/T)T·Sa²(ωT/2)三角对应抽样函数平方
高斯脉冲 e^{-at²}也是高斯形式变换后仍保持高斯形状
周期冲激串 Σδ(t-nT)周期冲激串时域周期,频域离散周期

这里统一使用角频率ω形式的正变换,不另外带系数。如果使用频率f的常用形式,矩形脉冲对应T·sinc(fT),其中sinc(x)=sin(πx)/(πx),形式和角度频率差一个π比例的因子,需要注意区分。

矩形脉冲和三角脉冲是所有基础变换对里最容易出考题的。矩形脉冲相对好记,脉冲宽度T,频谱正好T乘以Sa(ωT/2)。三角脉冲如果当场硬背,很容易记错系数,下面两个方法能让你根本不靠背就把它推出来。

3.2 卷积法:构造一个矩形自卷积就完事

这个思路特别直接:三角脉冲可以由两个矩形脉冲卷积出来。

设矩形脉冲p(t)=rect(t/T),宽度T、高度1。把两个相同的矩形脉冲做卷积,卷积结果就是一个底宽2T、顶点高度为T的三角形。把结果再除以T,就得到标准三角脉冲tri(t/T):

tri(t/T) = (1/T) · [rect(t/T) * rect(t/T)]

根据傅里叶变换的卷积定理,时域卷积对应频域相乘。先写出矩形脉冲的变换对:

rect(t/T) ⟷ T·Sa(ωT/2)

于是三角脉冲的频域就是矩形频谱的平方再除以T:

FT[tri(t/T)] = (1/T) · [T·Sa(ωT/2)]² = T·Sa²(ωT/2)

整个过程只有两步:矩形脉冲频谱是T·Sa,平方后除以T,得到T·Sa²。以后看到三角脉冲,第一反应就是“矩形卷积矩形”,频谱写成Sa的平方就不会错。

这个方法还能扩展。梯形脉冲可以看成两个宽度不同的矩形做卷积,频谱自然就是两个Sa函数相乘。很多复杂脉冲都能用卷积构造法快速推出频谱,比翻积分表靠谱多了。

3.3 求导法:对三角脉冲做两次微分变成冲激

如果对卷积不太熟,另一个思路是用微分性质。三角波是分段直线,它的一阶导数是分段常数的方波,二阶导数直接变成三个冲激。用“时域求导等于频域乘以jω”的性质,也可以很快推出频谱。

标准三角脉冲f(t)=tri(t/T),在[-T,T]区间外为0。求一阶导,斜率在[-T,0]是+1/T,在[0,T]是-1/T,所以f'(t)是一个负向的矩形波。再求一次导,在t=-T处会出现正冲激+1/T,t=0处出现负冲激-2/T,t=T处出现正冲激+1/T,即:

f''(t) = (1/T)δ(t+T) - (2/T)δ(t) + (1/T)δ(t-T)

利用微分性质,若f(t)的傅里叶变换为F(ω),那么f''(t)的傅里叶变换为(jω)²F(ω)。于是:

(jω)²F(ω) = (1/T)(e^{jωT} - 2 + e^{-jωT})

把分子整理一下,e^{jωT} + e^{-jωT} - 2 = -4sin²(ωT/2),再除以(jω)²化简,最后得到:

F(ω) = T·Sa²(ωT/2)

结果和卷积法一致。求导法的好处是锻炼微积分性质,而且能帮你理解为什么三角脉冲频谱是Sa²而不是Sa——二阶导数对应三个冲激,冲激组合的频谱除以ω²,自然就出现“每求一次导,频域除以一次jω”的痕迹。

注意:卷积法和求导法都涉及系数,最容易错的是矩形脉冲宽度和三角脉冲底宽的对应关系。上面推导里rect(t/T)的频谱是T·Sa(ωT/2),三角脉冲tri(t/T)底宽是2T。如果换一种符号定义,底宽写成T,公式里的T要跟着改,不能整个照抄。

3.4 关于“萨函数还是辛格函数”的符号混用提醒

国内教材一般用采样函数Sa(x)=sin(x)/x,国外很多教材和Python、MATLAB里用的是sinc(x)=sin(πx)/(πx)。两种符号差一个π,导致同一个矩形脉冲写出来不一样。

用Sa函数表示,矩形脉冲FT是T·Sa(ωT/2);用sinc函数表示,写成T·sinc(fT)。前者自变量是角频率,后者自变量是自然频率,两者数值上差π倍。

我建议做理论推导时统一用角频率ω和Sa函数,工程上读MATLAB、Python代码时再看它用的是哪种约定。这个习惯能省掉很多对不上号的麻烦。

4. 实战中的典型问题与排查思路

4.1 混叠:离散化之前最该做的那一步

离散时间信号做傅里叶分析,混叠是绕不开的第一关。不管是DTFT还是DFT,离散化都会让频谱以采样频率fs为周期重复。如果原始模拟信号里有超过fs/2的频率成分,这些高频成分会折叠回低频区,和真实低频信号叠在一起,再也没法分离。

很多人做数据采集只关心采样率够不够高,忘了在ADC之前加抗混叠滤波器。正确的流程是先做模拟低通滤波,把fs/2以上的分量滤掉,再采样。数字信号处理里的频谱混叠不可逆,一旦叠了,后续任何滤波都是亡羊补牢。

另外,采样率的选择也不能只按理论最低值来。实际工程里常用fs≥ (5~10)倍信号最高频率,一方面给抗混叠滤波器留过渡带,另一方面降低量化噪声对高频段的影响。

4.2 泄漏和栅栏效应:为什么频谱看起来有鬼

DFT处理的是有限长序列,但信号本身可能是无限长的,于是必然要截断。截断相当于在时域乘了一个矩形窗,频域就变成原频谱与Sa函数的卷积。原来一根锐利的谱线,被Sa展宽成带旁瓣的形状,这就是频谱泄漏。泄漏让频谱看起来“有鬼”:主瓣变宽、旁边出现假峰,小信号可能被旁瓣淹没。

缓解泄漏的思路是换窗。矩形窗主瓣窄但旁瓣高,汉宁窗、海明窗、布莱克曼窗都能压低旁瓣,代价是主瓣变宽、频率分辨率变差。频谱分析里没有免费的午餐,窗函数选择就是在分辨率和泄漏抑制之间做权衡。

栅栏效应则是另一个坑。DFT只输出N个离散频点X[k],相当于透过栅栏看频谱,两个频点之间的频率分量看不到,可能正好错过真实的谱峰。时域补零可以增加频域采样点,让频谱曲线更细腻,看起来像“栅栏变密了”,但补零不会增加信息量,真实分辨率依然由数据长度决定。

提示:先想清楚自己要解决的问题是什么。测频率、测幅值、测相位,三个需求对窗函数和数据长度的要求完全不同。没有万能窗,只有适合当前任务的窗。

4.3 FFT幅值谱归一化:X[k]到底是不是幅度

用FFT做完频谱分析,想从幅值谱读出真实信号的幅度,要注意归一化问题。FFT直接输出的X[k]并不是信号的真实幅度,它只是DFT的原始结果。

如果原始时域信号是单频正弦x(t)=Acos(2πf0t),采样N点后做N点FFT,频谱上在f0对应的频点k0处,|X[k0]|≈A·N/2。要想得到真实幅度A,需要乘以2/N。直流分量对应的k=0则只需要乘以1/N,因为直流没有正负频率对半分的问题。

工程上常见错误是完全不归一化,读出来一堆和N相关的“幅度”,换个FFT点数结果就变了。正确的流程是:取X[k]的模,k=0处乘1/N,其他频点乘2/N,得到的就是单边幅值谱。

4.4 选型建议:什么时候用哪种形式

理论上学四种形式是为了搞懂信号的本质,实际动手时怎么选其实很明确。

连续系统建模、解析推导、滤波器和调制理论的底层分析,用FT。周期信号做谐波测量,用FS或者说FS的思想,需要问清楚基波频率是多少。离散序列的频响分析、数字滤波器设计、理论计算卷积,用DTFT,它给出的是连续的周期频谱,适合推导解析式。实际测量、数值计算、音频处理、振动分析、任何上计算机跑数据的场景,用DFT,因为只有DFT是可计算的。

如果是手算一些简单题,FS和FT足够;如果是做算法、跑数据、调参数,基本绕不开DFT/FFT。搞明白每种形式的适用场景,比反复背公式有用得多。

5. 一些个人体会

我自己在学习和带人的过程中,最大的体会是:傅里叶变换的四种形式,本质上是同一句话在四种信号条件里的展开——时域周期对应频域离散,时域离散对应频域周期。把这两句话焊在脑子里,后面无论遇到连续采样、离散序列、周期延拓还是FFT归一化,都能自己推导,不需要记大纲。

三角脉冲这类典型变换对,强烈建议用“矩形卷积矩形”和“二阶导等于冲激组合”这两个视角各推一遍。第一次推可能觉得麻烦,推两三次之后,看到三角函数脑子里就自动出现Sa²和那个1、-2、1的冲激组合,比死记硬背快得多。

最后再分享一个实际操作中的习惯:我每次做频谱分析,都会先手写一遍信号模型和对应的傅里叶理论表达式,想清楚这个信号是连续还是离散、周期还是非周期,再打开代码去跑FFT。这个习惯看起来多花两分钟,实际上能挡住大量因为四形式混用导致的低级错误。傅里叶变换这个工具,用好了是信号处理最锋利的一把刀,值得花时间把它捋顺。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询