快速傅里叶变换与离散时间系统实现
1. 复合点数的快速傅里叶变换算法
在离散傅里叶变换(DFT)中,当点数是特定幂次时,选择合适的快速傅里叶变换(FFT)算法能提高效率。
-
基 - 4 FFT 算法
:当 DFT 的点数 (N = 4^v) 时,使用基 - 4 FFT 算法比基 - 2 FFT 算法更高效。
-
推导基 - 4 时域抽取 FFT 算法
:设 (N_1 = N/4) 和 (N_2 = 4),通过特定的分解方式得到 (X(k)) 的表达式。内部求和是序列 (x(4n_1 + n_2)) 的 (N/4) 点 DFT,外部求和是 4 点 DFT。若 (N_2 = N/4) 能被 4 整除,则重复该过程,会产生 (v = \log_4 N) 级,每级有 (N/4) 个蝶形运算。
-
蝶形结构与运算量比较
:基 - 4 FFT 中的 4 点蝶形运算每个只需要 3 次复数乘法。对于长度为 (N = 4^v) 的 DFT,复数乘法次数为 (\frac{3N}{8} \log_4 N),而基 - 2 时域抽取 FFT 的乘法次数为 (\frac{N}{2} \log_2 N),基 - 4 FFT 的乘法次数是基 - 2 FFT 的 (\frac{3}{4}) 倍。
-
基 - 3 FFT 算法
:当 (N = 3^v) 时,可推导基 - 3 FFT 算法。
-
时域抽取算法
:将 (x(n)) 以 3 为因子抽取形成三个长度为 (N/3) 的序列,通过对这些序列的处理得到 (N) 点 DFT 的表达式。不断以 3 为因子抽取,直到剩下 3 点 DFT。对于 9 点时域抽取 FFT,其流图可通过复制 3 点蝶形并调整分支乘法因子得到。
-
乘法次数
:若 (N = 3^v),基 - 3 FFT 有 (v) 级,每个 3 点蝶形一般需要 6 次乘法(不考虑乘以 (\pm1) 时可能更少),每级有 (N/3) 个蝶形,所以总乘法次数为 (2N \log_3 N)。
-
原位计算
:基 - 3 FFT 的计算可以原位进行。
-
频域抽取算法
:对于 (N = 3^v) 的基 - 3 频域抽取 FFT,分别计算 (((k))_3 = 0)、(((k))_3 = 1) 和 (((k))_3 = 2) 时的索引,可得到相应的表达式和流图。
2. 利用 8 点 FFT 芯片计算 24 点 DFT
若有多个 8 点时域抽取 FFT 芯片,可将 24 点 DFT 以 3 为因子对 (x(n)) 进行抽取,分解为三个 8 点 DFT。形成三个序列后,使用 8 点 FFT 芯片计算 (F(k))、(G(k)) 和 (H(k)),再将 8 点 FFT 的输出组合得到 24 点 DFT。
3. 素因子 FFT
- 21 点素因子 FFT :对于 (N_1 = 7) 和 (N_2 = 3) 的 21 点素因子 FFT,通过特定的索引映射得到输入和输出的二维数组表示。该算法没有旋转因子,只需要计算三个 7 点 DFT 和七个 3 点 DFT,乘法次数为 (7\times6 + 3\times42 = 168) 次。而 32 点基 - 2 FFT 需要更多乘法,所以对于 21 点序列,补零计算 32 点 DFT 更高效。
-
15 点 DFT 的不同算法
- 混合基 FFT :使用 (N_1 = 5) 和 (N_2 = 3) 的混合基 FFT,将 DFT 分解为两个阶段,先进行三个 5 点 DFT,再进行五个 3 点 DFT,过程中需要乘以旋转因子。
- 素因子算法 :同样 (N_1 = 5) 和 (N_2 = 3) 的素因子算法,索引映射不同,没有旋转因子,与混合基算法的连接方式相同,但输入和输出数组的排序不同,相比混合基 FFT 节省了 8 次复数乘法。
4. 离散时间系统的实现
线性移不变系统的输入和输出由线性常系数差分方程关联,不同的实现方式会影响计算量、内存需求、滤波器对系数量化的敏感度以及输出的舍入噪声。
5. 数字网络
对于具有有理系统函数的线性移不变系统,输入 (x(n)) 和输出 (y(n)) 通过线性常系数差分方程联系。计算输出所需的基本元素包括加法器、乘法器和延迟器,常用方框图和信号流图来表示系统的实现方式。信号流图中的节点对应加法器或分支点,分支表示线性变换,还有源节点(无输入分支,用于输入序列)和汇节点(只有输入分支,用于表示输出序列)。
6. FIR 系统的结构
因果有限长单位冲激响应(FIR)滤波器的系统函数是 (z^{-1}) 的多项式。
-
直接形式
:最常见的实现方式是使用抽头延迟线,需要 (N + 1) 次乘法、(N) 次加法和 (N) 次延迟。若单位样本响应有对称性,可减少乘法次数。
-
级联形式
:系统函数可分解为一阶因子的乘积,若 (h(n)) 为实数,复根成对出现,可组合成具有实系数的二阶因子,实现为二阶 FIR 滤波器的级联。
-
线性相位滤波器
:线性相位滤波器的单位样本响应具有对称性或反对称性,可利用这种对称性简化网络结构,减少乘法次数。
-
频率采样结构
:该结构根据滤波器的 DFT 系数来参数化滤波器。对于窄带滤波器,其大部分 DFT 系数为零,使用频率采样结构实现更高效。若 (h(n)) 为实数,可对结构进行简化。
以下是不同 FFT 算法的运算量比较表格:
| 算法类型 | 适用点数 (N) | 乘法次数 |
| ---- | ---- | ---- |
| 基 - 2 FFT | (N = 2^v) | (\frac{N}{2} \log_2 N) |
| 基 - 4 FFT | (N = 4^v) | (\frac{3N}{8} \log_4 N) |
| 基 - 3 FFT | (N = 3^v) | (2N \log_3 N) |
下面是基 - 3 时域抽取 FFT 的简单 mermaid 流程图:
graph TD;
A[x(n)] --> B[以 3 为因子抽取];
B --> C[三个 N/3 点序列];
C --> D[处理得到 N 点 DFT];
D --> E{是否剩下 3 点 DFT};
E -- 否 --> B;
E -- 是 --> F[结束];
快速傅里叶变换与离散时间系统实现
7. IIR 系统的结构
因果无限长单位冲激响应(IIR)滤波器的输入 (x(n)) 和输出 (y(n)) 由线性常系数差分方程描述,以下是几种不同的实现方式:
-
直接形式
-
直接形式 I
:将描述系统的差分方程写成一对差分方程,分别对应一个 FIR 滤波器和一个全极点滤波器,二者级联实现系统。其计算要求为:每个输出样本需要 (p + q + 1) 次乘法、(p + q) 次加法,需要 (p + q) 个延迟。
-
直接形式 II
:通过交换直接形式 I 中 FIR 滤波器和全极点滤波器的级联顺序得到。
以下是 IIR 直接形式结构的计算量对比表格:
| 结构类型 | 乘法次数(每个输出样本) | 加法次数(每个输出样本) | 延迟数量 |
| ---- | ---- | ---- | ---- |
| 直接形式 I | (p + q + 1) | (p + q) | (p + q) |
| 直接形式 II | 待确定(与具体系统有关) | 待确定(与具体系统有关) | 待确定(与具体系统有关) |
8. 补充问题分析
- 卷积效率问题 :对于长度为 1024 的序列 (x(n)) 与长度为 (L) 的序列 (h(n)) 进行卷积,当 (L) 满足一定条件时,直接进行卷积比通过取 (X(k)H(k)) 的逆 DFT 并使用基 - 2 FFT 算法计算 DFT 更高效,但具体 (L) 值未明确给出。
- 非 2 的幂次序列处理 :对于 1025 点的数据序列,零填充使其长度为 (N = 2^n) 后使用基 - 2 FFT 算法计算 DFT,需要的乘法和加法次数分别为 11264;若直接计算 1025 点 DFT,需要的乘法和加法次数为 1050625。
-
基 - 3 FFT 相关
- 输入序列索引 :在基 - 3 时域抽取 FFT 中,输入序列 (x(n)) 的索引以三进制形式表示,然后按三进制数字的逆序读取。
- 频域抽取乘法次数 :基 - 3 频域抽取 FFT 的乘法次数与基 - 3 时域抽取 FFT 相同,为 (2N \log_3 N)。
-
12 点 DFT 计算
- 特定 FFT 算法 :使用特定的 FFT 算法计算 12 点 DFT,需要 30 次乘法和 60 次加法;若直接计算 12 点 DFT,则需要 144 次乘法和 132 次加法。
-
素因子 FFT 相关
- 99 点素因子 FFT 索引映射 :对于 (N_1 = 11) 和 (N_2 = 9) 的 99 点素因子 FFT,索引映射为 (n = 9n_1 + 11n_2),(k = 45k_1 + 22k_2)。
- 12 点素因子 FFT 乘法次数 :当 (N_1 = 4) 和 (N_3 = 3) 时,不考虑乘以 (\pm1) 和 (\pm j),12 点素因子 FFT 需要 24 次复数乘法。
- 99 点素因子 FFT 旋转因子 :(N_1 = 11) 和 (N_2 = 9) 的 99 点素因子 FFT 没有旋转因子。
- 15 点素因子 FFT 乘法次数 :不考虑乘以 (\pm1) 时,15 点素因子 FFT 需要 90 次复数乘法。
下面是使用 8 点 FFT 芯片计算 24 点 DFT 的 mermaid 流程图:
graph TD;
A[x(n)] --> B[以 3 为因子抽取];
B --> C[形成三个 8 点序列];
C --> D[使用 8 点 FFT 芯片计算 F(k)、G(k)、H(k)];
D --> E[组合 8 点 FFT 输出];
E --> F[得到 24 点 DFT];
综上所述,在数字信号处理中,不同的 FFT 算法和离散时间系统实现结构各有优劣。在实际应用中,需要根据具体的问题,如序列长度、计算效率要求、内存限制等,选择合适的算法和结构,以达到最佳的处理效果。例如,对于点数为 4 的幂次的 DFT,基 - 4 FFT 算法在乘法次数上更具优势;对于窄带 FIR 滤波器,频率采样结构可能是更高效的实现方式。同时,素因子 FFT 算法在某些情况下可以避免旋转因子的乘法,节省计算量。
超级会员免费看

56

被折叠的 条评论
为什么被折叠?



