jimmhu
发表于 2025-2-17 11:36
在构建查找表和进行FFT计算时,要确保数据的格式和类型保持一致。例如,如果查找表中的值是浮点数,那么在进行蝶形运算时,相关的计算也应该使用浮点数运算,以避免数据类型转换带来的精度损失。
LinkMe
发表于 2025-2-17 12:05
列表在一定的复杂程度上可以省钱,
usysm
发表于 2025-2-17 13:20
当将查找表中的值存储为离散的数值时,会引入量化误差。这种误差可能会随着计算的传播而积累,影响最终的结果。因此,需要在构建查找表时选择合适的量化精度,并在计算过程中采取适当的措施来控制误差的传播。
digit0
发表于 2025-2-18 17:30
查表法实现FFT通过预先计算并存储常见的复数乘积结果,在运算时直接查表获取,从而提高运算速度。具体实现包括构建蝶形运算的预先计算表,并在运算时根据输入信号的下标查找对应结果。
chenqianqian
发表于 2025-2-26 19:23
查表法的精度如何呢?能满足要求吗?
suncat0504
发表于 2025-2-26 22:26
硬件资源够的话,查表法也是一个不错的选择。
物联万物互联
发表于 2025-2-27 07:01
查表法虽然应用广泛,但其有效性依赖于特定场景和需求,在某些场景下效果较好,但并非所有情况都适用。
结合国际经验
发表于 2025-2-27 14:27
FFT算法基于分治思想,将大问题分解为小问题。
地瓜patch
发表于 2025-2-28 12:08
这是fft滤波么
gejigeji521
发表于 2025-2-28 15:08
查表法适用于特定点数的FFT计算。
yangjiaxu
发表于 2025-2-28 15:24
好像查表法确实比较方便,就是占用了一些存储空间
单芯多芯
发表于 2025-2-28 18:35
可以通过计算标准FFT算法的结果与查表法实现的FFT结果进行对比,以验证查表法实现的FFT的正确性。
鹿鼎计
发表于 2025-3-2 23:37
检查表不仅提升效率,更能在复杂项目中节约成本
未来AI
发表于 2025-3-4 21:05
查表法能减少计算复杂度,从而节省计算资源,提高效率
zhengshuai888
发表于 2025-3-6 22:01
如果使用查表法计算,会影响运算速度吧。
weifeng90
发表于 2025-3-7 08:04
查表法计算精度和效率会受影响吗
PreWorld
发表于 2025-3-8 07:12
优化代码,减少循环次数和复杂度,使用更高效算法,提高计算速度
andy520520
发表于 2025-3-9 11:30
本帖最后由 andy520520 于 2025-3-9 18:09 编辑
zhuotuzi 发表于 2025-1-24 17:58
这个FFT计算完全是错误的,不知道是哪里搞的
计算N点的FFT,分为log2(N) 层,旋转因子的表格大小为twiddle_factors_table
andy520520
发表于 2025-3-9 11:38
本帖最后由 andy520520 于 2025-3-15 17:45 编辑
zhuotuzi 发表于 2025-1-24 17:58
上面的FFT计算完全是错误的,不知道是哪里搞的
计算N点的FFT,分为log2(N) 层,每层N/2个蝶形,每个蝶形有一个复数乘法,旋转因子的表格 twiddle_factors_table旋转因子表格大小是N/2
stage =0 , 1 , 2 , ... ,log2(N)- 1
在第0层, W_N^0 = 1
在第一层,W_N^0 = 1, W_N^(N/2^(stage +1)))
在第二层,W_N^0 = 1, W_N^(N/2^(stage + 1)), W_N^(2 *N/2^(stage + 1)),W_N^(3 * N/ 2^(stage + 1))
下面给出旋转因子表格
#define SCALE_FACTOR (1 << 14) // 在乘法的时候再缩回
// 定义复数结构体,元素类型改为
typedef struct
{ long int real;
long int imag;
} complex_int;
// 获取旋转因子表
void get_twiddle_factors(int n, complex_int *twiddle_factors)
{
for (int k = 0; k < n / 2; k++)
{
double angle = -2 * M_PI * k / n;
double real_part = cos(angle);
double imag_part = sin(angle);
// 将实部和虚部乘以放大因子并取整
twiddle_factors.real = (long int)(real_part * SCALE_FACTOR);
twiddle_factors.imag= (long int)(imag_part * SCALE_FACTOR);
}
}
FFT的精髓在下面的公式 ,合并了复数乘法,减少了乘法的次数,基2时间抽取法的FFT,乘法次数是 N/2 * log2(N)
t = W_N^k * odd
X =oven+ t
X =even- t
LinkMe
发表于 2025-3-9 12:24
查表法确实有其局限性,并非万能,只适用于特定场景,需要结合具体情况灵活使用。