2.5 FFT 模块 API 手册
1. 概述
FFT(快速傅里叶变换)模块用于对输入的时域数据进行傅里叶变换,将其转换为频域数据并返回相应的频率幅值。通过 FFT 运算,可以有效地将时域信号转换为频域信号,便于分析信号的频率成分。
2. API 介绍
FFT 模块提供了一个 FFT 类,支持三个主要函数:run()、freq() 和 amplitude(),用于分别进行快速傅里叶变换、频率计算及幅值计算。
2.1 类 machine.FFT
描述
该类用于创建 FFT 对象,并对输入的数据进行傅里叶变换。
语法
python
from machine import FFT
import array
# 定义时域数据
data = array.array('i', [1, 2, 3, 4, 5, 6, 7, 8])
# 创建一个 FFT 对象,执行 64 点 FFT 运算,偏移量为 0
fft1 = FFT(data, 64, 0)1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
参数
| 参数名称 | 描述 | 类型 | 输入/输出 |
|---|---|---|---|
data | 输入的时域数据,bytearray 类型。 | 输入 | |
points | FFT 运算的点数,支持 64、128、256、512、1024、2048 和 4096 点。 | 输入 | |
shift | 数据的偏移量,默认为 0。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 操作成功。 |
| 非 0 | 操作失败。 |
2.1.1 run() 方法
描述
该函数用于获取经过傅里叶变换后的频域数据。
语法
python
res = fft1.run()1
参数
无
返回值
| 返回值 | 描述 |
|---|---|
res | 返回一个包含频域数据的 list,其中包含 points 个元组,每个元组包含 2 个元素:实部和虚部。 |
2.1.2 freq() 方法
描述 该函数用于获取计算后的频率值。
语法
python
res = FFT.freq(points, sample_rate)1
参数
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
points | 参与 FFT 运算的点数。 | 输入 |
sample_rate | 数据采样率。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
res | 返回一个列表,包含运算后各频率点的频率值。 |
2.1.3 amplitude() 方法
描述 该函数用于计算各个频率点的幅值,主要用于测试用途,用户可自行在 Python 中编写更加复杂的幅值处理函数。
语法
python
amp = FFT.amplitude(FFT_res)1
参数
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
FFT_res | 函数 run() 返回的 FFT 计算结果。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
amp | 返回一个列表,包含各个频率点的幅值。 |