‹ 上一章
第4章
下一章 ›
☰ 全部章节
课程章节导航
×
CHAPTER 4
快速傅里叶变换
(FFT)
Fast Fourier Transform
课 程
数字信号处理(DSP)
学 期
2026 年 秋季学期
32 学时
24 智能医学
学习要求
本章要
掌握什么
(1)
理解提高离散傅里叶变换运算速度的
主要方法
;
(2)
了解
时间抽选奇偶分解
FFT 算法;
(3)
了解
频率抽选奇偶分解
FFT 算法;
(4)
理解
快速傅里叶逆变换(IFFT)
的概念;
(5)
掌握
线性卷积和线性相关
的 FFT 算法。
💡 FFT 不是新的变换,而是
DFT 的高效算法
——它把运算量从
O(N²)
降到
O(N log₂N)
,直接催生了现代数字信号处理产业。
知识地图
本章
知识结构
4.1 提高 DFT 运算速度的主要方法
直接计算量分析 · 利用 \(W_{N}^{kn}\) 的
对称性与周期性
· 分解算法
4.2 时间抽选(DIT)FFT
库里-图基算法 · 蝶形运算 · 运算量 ·
倒位序
4.3 频率抽选(DIF)FFT · 4.4 IFFT
按 k 奇偶分解 · 与时抽的
转置关系
· 用 FFT 算 IFFT
4.5 其他快速算法
复合数 FFT ·
CZT 线性调频 z 变换
4.6 DCT · 4.7 短时傅里叶变换 · 4.8 应用
离散余弦变换及其性质 · STFT 定义与
时频分辨率权衡
· 测振幅谱、测相关函数
4.1 一
直接计算 DFT 的
运算量
问题提出
设有限长序列 x(n),非零值长度为 N,对 x(n) 进行一次 DFT 运算,共需多大的运算工作量?
1. 比较 DFT 与 IDFT 之间的运算量
DFT:\(X\)(\(k\)) = \(\sum_{n=0}^{N-1}\) \(x\)(\(n\))\(W_{N}^{kn}\)
IDFT:\(x\)(\(n\)) = \(\frac{1}{N}\) \(\sum_{k=0}^{N-1}\) \(X\)(\(k\))\(W_{N}^{-kn}\)
两者
运算量完全相同
(只差 W 的符号与一个 1/N 系数),所以只分析 DFT 即可。
4.1 一
DFT 的
复数运算量
2. 以 DFT 为例计算复数运算量
计算
一个
X(k)(一个频率成分)值,当 k = 1 时:
\(N\) 次复数乘法 + (\(N\)−1) 次复数加法
要完成
整个
DFT 运算(N 个 k),其计算量为
\(N\)² 次复数相乘 + \(N\)(\(N\)−1) 次复数加法
≈ O(\(N\)²)
⚠ 结论
运算量与 N² 成正比。N 增大一倍,运算量增为
4 倍
——这就是必须改进的原因。
4.1 一
运算量增长
有多可怕
复数乘法次数
N
DFT(N²)
FFT
4
16
4
32
1024
80
128
16384
448
1024
1048576
5120
N = 1024
时,直接计算 DFT 需要
一百多万次复数乘法
,很难满足
实时信号处理
的要求。
而用 FFT 只需
5120 次
—— 相差约
205 倍
。
这正是 1965 年 Cooley-Tukey 论文被称为"20 世纪最重要的数值算法之一"的原因。
直接 DFT:N²
FFT:(N/2)log₂N
4.1 二
改善 DFT 运算速度的
基本途径
关键:利用 \(W_{N}^{kn}\) 的固有特性
① 对称性
:\(W_{N}^{k+N/2}\) = −\(W_{N}^{k}\)
② 周期性
:\(W_{N}^{k+N}\) = \(W_{N}^{k}\)
③ 可约性
:\(W_{N}^{rk}\) = \(W_{N/r}^{k}\)
此外 \(W_{N}^{0}\)=1、\(W_{N}^{N/2}\)=−1、\(W_{N}^{N/4}\)=−j 等
特殊值
可免去乘法。
(3)分解算法
把
N 点 DFT 逐步分解成若干个短序列的 DFT
,再组合起来。
分解后复数乘法次数 ≈
(N/2)·log₂N
,复数加法次数 ≈
N·log₂N
。
4.1 二
例:4 点 DFT 的
计算量
直接计算
N=4:共
16 次复数乘法 + 12 次复数加法
。
X(\(k\)) = \(\sum_{n=0}^{3}\) \(x\)(\(n\))\(W_{4}^{kn}\), \(k\)=0,1,2,3 ⇒ 4×4=16 次复乘
利用对称性后
将其展开,利用
\(W_{4}^{1}\) = −j、\(W_{4}^{2}\) = −1、\(W_{4}^{3}\) = j
以及 \(W_{4}^{(k+2)n}\) 的关系,合并同类项后:
8 次复数加法 + 2 次复数乘法
复乘从 16 降到 2 —— 这就是 FFT 思想的
雏形
。
4.2
时间抽选奇偶分解
FFT 算法
4.2.1 算法原理(库里-图基算法)
设 N = \(2^{M}\),把 x(n) 按
序号 n 的奇偶
分成两组:
偶数组:\(x_{1}\)(\(r\)) = \(x\)(2\(r\))
奇数组:\(x_{2}\)(\(r\)) = \(x\)(2\(r\)+1)
\(r\) = 0,1,…,\(N\)/2−1
于是 N 点 DFT 拆成两个 N/2 点 DFT(分别记 \(X_{1}\)(k)、\(X_{2}\)(k))。
\(X(k) = X_{1}(k) + W_{N}^{k}X_{2}(k)\)
\(X(k+N/2) = X_{1}(k) - W_{N}^{k}X_{2}(k)\)
后 N/2 个点
无需重新计算
,只需
改变符号
——利用 N/2 点 DFT 隐藏的周期性,运算量立刻减半。
4.2.1
蝶形
运算单元
作图要素(从左向右计算)
(1)
左边两路为
输入
;
(2)
右边两路为
输出
:右上为
相加
输出、右下为
相减
输出;
(3)
线旁数为
加权值
(旋转因子 \(W_{N}^{k}\))。
基本蝶形运算需要
1 次复乘 + 2 次复加
。
\(X_{上}\) = \(A\) + \(W\)·\(B\) , \(X_{下}\) = \(A\) − \(W\)·\(B\)
A
B
A+WB
A−WB
W
加权值
输入
输出
实线 = 相加 虚线 = 经 W 加权(下路相减)
4.2.1 演示
N = 8 时间抽选
信号流图
(分步演算)
◀ 上一步
第 0 步:倒位序输入
下一步 ▶
▶ 自动演算
重置
输入 x(n) = [1, 2, 3, 4, 5, 4, 3, 2] 经
倒位序重排
后,逐級蝶形运算 → 输出 X(k)(自然序)
4.2.1
N = 8 DIT
流图全貌
x(0)
x(4)
x(2)
x(6)
x(1)
x(5)
x(3)
x(7)
X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
X(7)
0
4
2
6
1
5
3
7
W₈⁰
W₈⁰
W₈⁰
W₈⁰
W₈⁰
W₈²
W₈⁰
W₈²
W₈⁰
W₈¹
W₈²
W₈³
第 1 级
第 2 级
第 3 级
倒位序输入
自然序输出
4.2.2
时间抽选 FFT 的
运算量估计
每级都由
N/2 个蝶形单元
构成。每一级运算都需要
N/2 次复乘
和
N 次复加
(每个结加减各一次)。
当 N = \(2^{M}\) 时共分
M = log₂N 级
,所以 M 级运算总共需要:
复乘次数:
\(\frac{N}{2}\) \(log_{2}N\)
复加次数:
\(N\) \(log_{2}N\)
直接 DFT
复乘
N²
复加
N(N−1)
→
O(N²)
FFT
复乘
(N/2)log₂N
复加
N log₂N
→
O(N log₂N)
💡 N=1024 时:DFT 需
1048576
次复乘,FFT 只需
5120
次,加速约
205 倍
;N 越大优势越显著。
4.2.3
按时间抽取 FFT 的
特点
当 x(n) 长为 N = \(2^{M}\) 时,要进行
M 次奇偶分解
,分为
M 级
计算。设 L 表示级数,它可以为 1 ~ M 中任意一值。
时间抽取奇偶分解 FFT 算法,其
输入序列 x(n) 为倒位序,输出序列为自然序列
。
倒位序的定义
将序号 n 写成
二进制码
,然后将二进制码
首尾倒置
,再将倒置的二进制码译成
十进制数
的排列顺序。
例:3 → 011 → 倒置 110 → 6,所以倒位序后第 3 号位置放的是原 x(6)。
4.2.3 演示
倒位序
对照演示
点击左侧序号查看
n = 0 000 → 000 → 0
▶ 逐个演示
规律:
二进制首尾倒置
——这正是 DIT 反复"奇偶分组"造成的
必然结果
(不是人为规定)。
4.2.3
即位运算
与"群"的概念
可以
"即位运算"
:将数据存在存储器内,每一级的运算结果都存入相应存储器,直至最终结果输出。——
节省内存
是 FFT 能实用的关键。
结构规律
每一级包括
N/2 个
基本蝶形运算;
第 L 级运算包括
N/\(2^{L}\) 个群
,群之间的间隔为
\(2^{L}\)
;
同一级中各个群的乘数 W 分布相同,各级共有
\(2^{L-1}\)
个乘数。
群内 W 的规律
每一个群中,W 分布自上而下为
\(W_{N}\)
的
从零开始的正整数次幂
(即 \(W_{N}^{0}\), \(W_{N}^{1}\), \(W_{N}^{2}\) …)。
级数 L
群数 N/\(2^{L}\)
群间隔 \(2^{L}\)
群系数 \(2^{L-1}\)
1
4
2
1
2
2
4
2
3
1
8
4
(N = 8,M = 3)
4.2.3
基本蝶形
运算关系
每个基本蝶形运算关系为
\(X_{L}(i) = X_{L-1}(i) + W_{N}^{p} X_{L-1}(j)\)
\(X_{L}(j) = X_{L-1}(i) - W_{N}^{p} X_{L-1}(j)\)
其中 i、j 为该级同一蝶形的
上、下节点
,p 为对应的旋转因子指数。
★ 时抽(DIT)蝶形的要点
时抽算法
先乘后加减
:旋转因子 W 乘在
下支路
上,然后与上路相加 / 相减。这与频抽算法(先加减后乘)恰好相反——两者互为
转置
。
4.3.1
频率抽选奇偶分解
FFT 算法
4.3.1 算法原理
与时抽相反:这次
把频域序号 k 按奇偶分项
(时域按前后半分开)。
\(X(2r) = \sum_{n=0}^{N/2-1} [x(n)+x(n+N/2)] W_{N/2}^{rn}\)
\(X(2r+1) = \sum_{n=0}^{N/2-1} [x(n)-x(n+N/2)] W_{N}^{n} W_{N/2}^{rn}\)
DIF 蝶形:先加减,后乘 W
\(A = x(n) + x(n+N/2)\)
\(B = [x(n) - x(n+N/2)]\cdot W_{N}^{n}\)
注意:加权 W 出现在
下支路的输出端
(先算加减,再乘),与时抽相反。
💡 DIF 输入为
自然序
,输出为
倒位序
——与时抽恰好对调。
4.3.1
N = 8 DIF
信号流图
W₈⁰
W₈¹
W₈²
W₈³
W₈⁰
W₈²
W₈⁰
W₈⁰
W₈⁰
W₈⁰
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
·
X(0)
X(4)
X(2)
X(6)
X(1)
X(5)
第 1 级
第 2 级
第 3 级
FFT 具有
M 级
、每级
N/2 个蝶形
、计算复杂度
N log₂N
。 输出 X(0),X(4),X(2),X(6),X(1)… 呈
倒位序
排列。
4.3.2
按频率抽取 FFT 的
特点
当 x(n) 长为 N = \(2^{M}\) 时,要进行
M 次分解
,分为
M 级
计算。频率抽取奇偶分解 FFT 算法,其
输入序列为自然序列,输出序列为倒序列
。
每一级包括
N/2 个
基本蝶形运算。
第 L 级运算包括
\(2^{L-1}\) 个群
,第 L 级群之间的间隔为
N/\(2^{L-1}\)
,L = 1,2,…,M。
群
:蝶形图中任一级相互交叉在一起的蝶形。
群间隔
:按从上到下顺序,上下两个群之间对应元素序号的增量。
同一级中各个群的乘数 W 分布相同,各级共有
N/\(2^{L}\)
个乘数;每个群中 W 自上而下为
\(W_{N}\)
的从零开始的正整数次幂。
级数 L
群数 \(2^{L-1}\)
群间隔 N/\(2^{L-1}\)
群系数 N/\(2^{L}\)
1
1
8
4
2
2
4
2
3
4
2
1
(N = 8,M = 3)
4.3.2
DIF 与 DIT 的
转置关系
即位运算,第 L 级蝶形输入间隔为
N/\(2^{L}\)
,基本蝶形运算关系为(先加减、后乘 W)。
频率抽选算法与时间抽选算法的蝶形流程图之间存在转置关系。
时间抽选 DIT
输入
倒位序
→ 输出自然序
频率抽选 DIF
输入自然序 → 输出
倒位序
二者运算量相同
都是 O(N log₂N)
转置
等价
把 DIT 流图"左右翻转、输入输出对调、箭头反向"即得 DIF 流图
DIT 先乘后加减 | DIF 先加减后乘
4.4
IFFT 方法 1
——利用 FFT 计算 IFFT
推导
IDFT:\(x\)(\(n\)) = \(\frac{1}{N}\) \(\sum_{k=0}^{N-1}\) \(X\)(\(k\))\(W_{N}^{-kn}\)
两边取共轭:\(x^{*}\)(\(n\)) = \(\frac{1}{N}\) \(\sum_{k=0}^{N-1}\) \(X^{*}\)(\(k\))\(W_{N}^{kn}\)
右边正好是
\(X^{*}\)(k) 的 DFT
!于是
\(x(n) = \frac{1}{N} \{ DFT[X^{*}(k)] \}^{*}\)
★ 步骤
①
把 X(k) 取共轭 → \(X^{*}\)(k);
②
对它做
正 FFT
;
③
结果取共轭;
④
除以 N。
这样
不必另写 IFFT 程序
,直接复用同一个 FFT 子程序即可。
4.4
IFFT 方法 2
——流图直接反转
还可以把 FFT 流图
直接反转
用作 IFFT,此时旋转因子取 \(W_{N}^{-k}\),并在最后除以 N。
由于 DIT 与 DIF 互为转置,于是有两组"共用同一程序"的对应关系:
时抽 FFT
频抽 IFFT
频抽 FFT
时抽 IFFT
使用同一程序
(仅 W 指数取反 + 除 N)
工程实现时不必分别编写 FFT / IFFT,一套代码两边通用
4.5
其他
快速算法
简介
(1)补零法:基 2-FFT
把序列补零到 2 的整数次幂,再使用基 2-FFT。
补零后不影响频谱形状,只是增加频谱抽样点
(让谱线更密)。
(2)任意基 FFT 算法
适用于
N 是一个复合数
,即它可以分解成一些
因子的乘积
(如 N = p·q)。
先把 N 点分解成 p 组,每组 q 点(或反过来),逐级分解。
(3)N 为质数时
如果要求准确的 N 点 DFT,而
N 又是质数
,则只能采用
直接 DFT 方法
,或者用后面将要介绍的
CZT(Chirp z 变换)
方法。
4.5.1
复合数
FFT 算法
思路
设
N = p · q
(复合数)。把 N 点序列先分成
p 组
,每组长
q
;
对每组做 q 点 DFT,再对组间做 p 点 DFT,中间穿插旋转因子校正。
\( X(k) = \sum_{n_{0}=0}^{q-1} W_{N}^{n_{0}k_{0}} \cdot W_{q}^{n_{0}k_{1}} \cdot \{ \sum_{n_{1}=0}^{p-1} x(n_{1},n_{0}) W_{p}^{n_{1}k_{0}} \}\)
例:N = 18 = 3 × 6,可分为
p = 3 组、每组长 q = 6
。
★ 价值
当 N 不是 2 的幂、但可以
因式分解
时(如 N = 12 = 3×4、N = 18 = 3×6),仍可用 FFT 思想大幅提速,
不必退回 O(N²)
。
4.5.2
线性调频 z 变换
CZT
定义
沿着
螺旋线
取样计算 z 变换,称其为
线性调频 z 变换
或
Chirp Z 变换
。
沿螺旋线
等分角取样
,取样点值为
\(z_{k}\) = \(A\)·\(W^{-k}\), \(k\) = 0,1,…,\(M\)−1
其中,
M 为所要分析复频点的点数
;
W 和 A 为任意复数
。
z 平面上的螺旋取样路径
单位圆
起点 A₀,按 W 等角、等比螺旋前进
CZT 的自由度:起点 A₀、角步长 φ₀、半径比 W₀ 均可任意指定
⇒ 可只算
感兴趣的频段
,且频点数 M 不必等于 N
DFT 只是 CZT 的特例:A=1、W=e
−j2π/N
、M=N(单位圆上均匀取样)
N 为质数时仍可用 CZT 高效求解
4.5.2
CZT 的
计算流程
利用
kn = (k² + n² − (k−n)²)/2
的恒等变形,把 \(z_{k}^{n}\) 拆成两个"线性调频"与一个卷积,从而用 FFT 实现:
x(n) 加权
× A
−n
W
n²/2
FFT
与 h(n) 频域相乘
h(n)=W
−n²/2
IFFT
再乘 W
k²/2
得 X(z
k
)
核心:把"变步长的复指数求和"化为"卷积",再用 FFT 计算 → 复杂度 O((N+M)log(N+M))
4.6.1
离散余弦变换
DCT
定义
\(X\)(\(k\)) = \(c\)(\(k\)) \(\sum_{n=0}^{N-1}\) \(x\)(\(n\)) cos \(\frac{(2n+1)k\pi}{2N}\), \(k\)=0,…,\(N\)−1
其中 c(0) = √(1/N),c(k) = √(2/N)(k≠0),保证变换矩阵
正交归一
。
若 x(n) 为
实数
,DCT 也是
实数
——这正是它优于 DFT 的地方。
★ 矩阵形式
X
= \(C_{N}\) ·
x
, \(C_{N}\) 称为
归一化正交矩阵
\(C_{N}\) 的行、列之间是
正交关系
,因此
\(C_{N}^{-1}\) = \(C_{N}^{T}\)
,反变换非常简洁。
4.6.1
DCT 反变换
IDCT
IDCT 定义
\( x(n) = \sum_{k=0}^{N-1} c(k) X(k) cos \frac{(2n+1)k\pi}{2N} \)
形式上
与正变换对称
——因为 \(C_{N}\) 是正交矩阵,反变换就是转置。
★ 为什么要用 DCT?
能量集中能力极强
:对大多数自然信号(语音、图像),DCT 能把能量压缩到少数低频系数,
且
变换结果全为实数
——因此成为
JPEG、MPEG、H.26x
等图像/视频压缩标准的核心。
4.6.2
DCT 的
性质
1. 线性性质
\(DCT[ax(n) + by(n)] = a\cdot DCT[x(n)] + b\cdot DCT[y(n)]\)
2. 对称性质
DCT 等价于对
偶对称延拓
后的 2N 点序列做 DFT 再取余弦项,因而具有良好的对称结构。
3. 能量保留定理(帕塞瓦尔)
\(\sum_{n=0}^{N-1} |x(n)|^{2} = \sum_{k=0}^{N-1} |X(k)|^{2}\)
正交变换
保持能量不变
——所以"丢掉小系数"造成的误差可直接用
系数能量
度量,便于率失真控制。
4.7.1
短时傅里叶变换
STFT
为什么要 STFT?
普通 DFT/FT 只能告诉我们"有哪些频率",却
无法告诉我们这些频率出现在什么时刻
。
对于
非平稳信号
(语音、心电、地震波),这远远不够 —— 需要
时频联合分析
。
基本思想:加窗 + 滑动
用一个
短窗 w(n)
截取信号的一小段,对该段做傅里叶变换;然后
沿时间移动窗
,重复此过程。
得到的就是
随时间变化的频谱
——即时频分布。
短时傅里叶变换的定义有
两种形式
(定义 1 与定义 2),二者等价但解释角度不同。
4.7.1
STFT 的
两种定义
定义 1(时域窗移)
\( STFT_{x}(n, \omega) = \sum_{m=-\infty}^{\infty} x(m) w^{*}(m-n) e^{-j\omega m} \)
把窗函数
沿时间平移
到 n 处,再对加窗后的信号做傅里叶变换。
定义 2(频域调制)
\( STFT_{x}(n, \omega) = e^{-j\omega n} \sum_{m=-\infty}^{\infty} x(m) w^{*}(m-n) e^{j\omega(m-n)} \)
等价地:先把信号
解调(搬频)
到零频,再与窗做卷积——对应
滤波器组
解释。
💡 两种定义对应两种
物理实现
:定义 1 → 逐段做 FFT;定义 2 → 一组
带通滤波器
并行工作。
4.7.1 演示
窗函数滑动与
时频分辨率
窗长
窗长 = 48
⏸ 暂停滑动
窗越短
→ 时间分辨率高、频率分辨率低;
窗越长
→ 频率分辨率高、时间分辨率低。
二者相互制约(不确定性原理)。
4.7.1
STFT 的
物理解释
定义 1 的物理解释
把信号
分段截取
,每一段视为"短时平稳",逐段做傅里叶变换。
直观对应:滑动窗口 + FFT。
输出 = (时间 n,频率 ω)二维函数。
定义 2 的物理解释
对每个频率 ω,先用 \(e^{-j\omega n}\) 把该频带
搬移到零频
,再与窗函数做
低通卷积
。
直观对应:
带通滤波器组
。
每个 ω 对应一个通道,输出即该通道的复包络。
x(n)
× w(m−n) 加窗
FFT / DFT
X(n, ω) 时频谱
定义 1 的实现:滑动加窗 → 逐帧 FFT → 拼成时频谱(语谱图的原理)
4.7.2
STFT 的
性质
1. 线性性质
STFT 是
线性变换
:
STFT[a·x + b·y] = a·STFT[x] + b·STFT[y]。
2. 频移性质(调制特性)
若 y(n) = x(n)·\(e^{j\omega₀n}\)(频谱搬移),则
\(STFT_{y}\)(n, ω) = \(STFT_{x}\)(n, ω − ω₀)。
时频图沿
频率轴
整体平移。
3. 时移特性
若 y(n) = x(n − n₀),则
\(STFT_{y}\)(n, ω) = \(e^{-j\omega n₀}\)·\(STFT_{x}\)(n − n₀, ω)。
时频图沿
时间轴
平移,并附加线性相位。
4. 共轭对称性
当信号是
实信号
时,
STFT(n, ω) = \(STFT^{*}\)(n, −ω)。
与时域实信号的傅里叶变换共轭对称一致,只需画 ω ≥ 0 半平面。
5. 由 STFT 恢复信号(完全重构)
在窗函数满足一定条件(如 Σ|w|²≠0)时,可由 STFT
完全恢复
原信号 x(n)。这保证了时频分析
不丢失信息
,是滤波器组综合的理论基础。
4.7.3
时间分辨率
vs 频率分辨率
第一种极端情况:窗无限长
STFT
退化为信号的傅里叶变换
:
没有任何时间分辨率
,却有
最好的频域分辨率
。
窗宽 → ∞ 时,加窗等于没加窗,只剩全局频谱。
第二种极端情况:窗无限短(趋近冲激)
STFT
退化为信号本身
:有
理想的时间分辨率
,但
不提供任何频率分辨率
。
窗宽 → 0 时,每一"段"只剩一个样点,无从谈频率。
⚠ 核心矛盾
时间分辨率取决于
窗函数的长度
——希望 w(n) 愈短愈好;
频域分辨率取决于
窗频谱的宽度
——希望窗口尽量宽。
时域分辨率和频域分辨率相互制约
,不可兼得。
4.7.4
STFT 的
实现方法
1. 用 FFT 计算 STFT
\( X(n, k) = \sum_{m=0}^{N-1} x(m+n) w(m) e^{-j\frac{2\pi}{N}km} \)
式中:n 为
帧(时间)序号
,k 为
频率序号
,N 为 FFT 点数。
做法:分帧 → 加窗 → 每帧做 N 点 FFT → 拼接。这就是
语谱图
的标准生成流程。
2. 用滤波器组法实现 STFT
假设在频率域采样
M 点
,采样点的频率为
ω\(_{k}\) = 2πk/M
。
则每个 ω\(_{k}\) 对应一个
带通滤波器通道
:调制 → 与窗卷积(低通)→ 输出复包络。
M 个通道并行,即构成
均匀滤波器组
。
STFT 一个通道的原理框图(对应频点 ω
k
)
x(n)
× e
−jω
k
n
与 w(n) 卷积(低通)
抽取 / 降采样
X(n, ω
k
)
M 个这样的通道并联
即构成完整 STFT 滤波器组
4.8
FFT 实际
应用举例
4.8.1 测量系统的振幅谱
对系统
输入自功率谱
与
输入-输出互功率谱
做估计,两者相除即得系统频率响应。
|\(H\)(\(e^{j\omega}\))| = \(\frac{|S_{xy}(\omega)|}{S_{xx}(\omega)}\) (互谱 ÷ 自谱)
其中功率谱用 FFT 快速估计:
\(S_{xx}\)(ω) ≈ |X(k)|²
(周期图法)。
4.8.2 测量相关函数(相关谱)
利用"相关 ⇔ 频域共轭相乘",用 FFT 快速算相关:
\(r_{12}(m) = IFFT[X_{1}(k)\cdot X_{2}^{*}(k)]\)
用途:
雷达/声纳测距、回声消除、模板匹配、信号时延估计
。
小结
第4章
核心回顾
为什么需要 FFT
直接 DFT:
O(N²)
—— N=1024 需百万次复乘
利用 \(W_{N}\) 的
对称性、周期性
分解
FFT:
O(N log₂N)
,加速数百倍
DIT 与 DIF
DIT:
输入倒位序
、输出自然序;先乘后加减
DIF:输入自然序、
输出倒位序
;先加减后乘
二者
互为转置
,运算量相同
其他算法
IFFT:取共轭 → FFT → 取共轭 → 除 N
复合数 FFT、
CZT
(螺旋取样,N 可为质数)
DCT:实变换、
能量集中
,JPEG/MPEG 核心
STFT
加窗 + 滑动 →
时频谱
定义 1 → 分帧 FFT;定义 2 →
滤波器组
时域与频域分辨率相互制约
🎯
一句话
:FFT 把 DFT 从"算不动"变成"实时可算";
蝶形、倒位序、N log₂N
是它的三个关键词。
演示
理想滤波器 vs 加窗实际(吉布斯)
理想低通是矩形;截断成有限长必加窗,导致通带/阻带波纹(吉布斯现象)。汉宁窗压低旁瓣但加宽主瓣。
矩形窗
汉宁窗
N =
21
演示
群延迟:线性相位 vs 非线性相位
群延迟 τ_g(ω)=−dφ/dω。线性相位 FIR 的 τ_g 为常数(无相位失真);IIR 通常随频率变化。
线性相位 FIR
非线性 IIR
习题
本章
习题
给定差分方程 \(y(n)=0.5y(n-1)+x(n)\),求系统函数 \(H(z)\) 并判断系统是否稳定。
一阶系统 \(y(n)=x(n)-x(n-1)+\alpha y(n-1)\),讨论 \(\alpha\) 对幅频特性的影响。
什么是频率采样法?它直接对什么进行采样来设计 FIR 滤波器?
☰
大纲
本课大纲
«
‹
›
← → 翻页 · 空格 下一步 · M 章节 · F 全屏