Engee 文档

FFT

输入信号的快速傅立叶变换 (FFT)。

类型: FFT

图书馆中的路径:

/Signal Operations/Transforms/FFT

说明

FFT 程序块在多维输入数组 的第一个维度上计算快速傅立叶变换 (FFT)。

该程序块使用两种可能的 FFT 实现之一。您可以选择基于 FFTW 库的实现或基于 Radix-2 算法的实现。

当输入信号长度 大于 FFT 长度 时,输出信号幅度可能会增大。这是因为 FFT 块使用长度模数据重置 ,以保留所有可用的输入样本。

为避免振幅增加,可以将输入采样长度 截断为 FFT 长度 。为此,请在模型中将块*Pad* 放在块 FFT 之前。

港口

输入

端口_1 - 输入信号
向量 | 矩阵 | `多维数组

用于 FFT 计算的输入信号,如向量、矩阵或多维数组。

程序块按多维输入信号的第一个维度计算 FFT。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

输出

端口_1 - 输入信号的 FFT
向量` | 矩阵` | 多维数组

以向量、矩阵或多维数组形式返回的输出信号。

从多维输入数组的第一维计算 FFT。

-th 输出通道的第-个条目 等于 -th 输入通道的 -point 离散傅里叶变换 (DFT) 的 -th 点:

π

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

参数

主要参数

FFT 实现 - FFT 实现
Radix-2(默认)` | FFTW

FFT 实现:

  • FFTW - 支持任意长度的输入信号。

  • Radix-2 - 实现浮点数据的位处理。尺寸为 的输入矩阵的维度 必须等于 2 的幂次。若要处理其他输入维数,请使用块Pad ,将这些维数扁平化或截断为 2 的幂次,或者,如果可能的话,选择 FFTW 实现。

按位反序输出 - 按位反序输出
off (default) | on

指定输出通道元素相对于输入通道元素的顺序。选中时,输出通道元素以相对于输入序列顺序的位反转顺序显示。未选中时,输出通道元素相对于输入序列顺序以线性顺序显示。

FFT 块以位反转顺序计算输出。 FFT 块输出的线性排序需要额外的位反转操作。在许多情况下,您可以通过选择*以位反序输出*复选框来提高 FFT 程序块的速度。

依赖关系

要使用此参数,请将 FFT 实现 参数设置为 "Radix-2"。

输出除以 FFT 长度 - 输出除以 FFT 长度
off (默认) | `on'。

选择此选项后,程序块将按 FFT 长度分割 FFT 输出。如果希望 FFT 输出保持在与输入相同的幅度范围内,该选项非常有用。

从输入尺寸继承 FFT 长度 - 从输入尺寸继承 FFT 长度
已启用(默认) | 已禁用

选择从输入尺寸继承 FFT 长度。选中此复选框时,输入长度必须等于 2 的幂次。

依赖关系

如果未选择此复选框,则 FFT 长度 参数可用于指定长度。

*FFT 长度
64(默认值)` | 整数

将 FFT 长度指定为整数,即 2 的幂次。

如果*FFT 实现*参数设置为 "Radix-2 "或*以位反序输出*复选框被选中,该值必须等于 2 的幂次。

依赖关系

要使用此参数,请取消选中*从输入尺寸继承 FFT 长度*。

当 FFT 长度短于输入长度时 - 折叠或截断输入数据
已启用(默认) | 已禁用

根据 FFT 长度选择是卷积还是截断输入数据。如果选中,当 FFT 长度小于输入长度时,将在 FFT 操作前执行模卷积。如果未选中,则在 FFT 操作前将输入数据截断为 FFT 长度。

依赖关系

要使用此选项,请清除*从输入尺寸继承 FFT 长度*复选框。

算法

FFTW 实现

FFTW "实现提供了优化的 FFT 计算,包括支持变换长度等于或不等于 2 的幂次(如在模拟中)。输入数据类型必须是浮点型。

Radix-2 实现

Radix-2 "实现支持位反转处理,允许程序块执行 C 代码生成。尺寸为 M 乘 N 的输入矩阵的维度 必须为二度。要处理其他输入维数,可使用程序块*Pad* ,将这些维数增强或截断为 2 的幂次。

当选择 "Radix-2 "时,程序块将实现以下一种或多种算法:

  • 蝴蝶运算

  • 双信号算法

  • 半长算法

  • Radix-2 时差稀疏 (DIT) 算法

  • Radix-2 频率 (DIF) 稀疏算法

实信号和复信号的 Radix-2 算法

输入数据的复杂性 输出数据的阶次 用于 FFT 计算的算法

复数

线性

位反转运算和 Radix-2 DIT 算法

复数

比特反转

Radix-2 DIF

线性

位反转运算和 Radix-2 DIT 与半长和双信号算法相结合

比特反向

结合半长和双信号算法的 Radix-2 DIF

在计算 DIF 之前,先将实数序列形成复数序列,可以提高 FFT 算法处理实数输入信号的效率。如果有 个实数输入通道,FFT 单元通过对第一个 输入通道应用双信号算法,对最后一个奇数通道应用半长算法来生成这些复序列。

针对三角函数值表优化 Radix-2

在某些情况下,Radix-2 模块算法会计算所有可能的三角函数值。

π ,

其中

  • - 是两个值中的较大值:

  • .

程序块将这些值存储在一个表中,并在模拟过程中进行检索。下表显示了表格中浮点数的条目数:

N 点 FFT 的表格条目数

浮点

文学

  1. Orfanidis, S. J. Introduction to Signal Processing.Upper Saddle River, NJ: Prentice Hall, 1996, p. 497.

  2. Proakis, John G. and Dimitris G. Manolakis.Digital Signal Processing, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1996.

  3. FFTW (https://www.fftw.org)

  4. Frigo, M. and S. G. Johnson, "FFTW: An Adaptive Software Architecture for the FFT," Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, Vol.3, 1998, pp.