最近在开发一个项目,用到大量线性变换(矩阵计算)和快速傅里叶变换(FFT)。
利用Eigen实现矩阵计算非常方便,在实现FFT时,借助了FFTW3库,但二者由于数据类型不同,需要转化,影响计算效率。
Eigen+FFTW3的计算需要1.7s,希望进一步提高算法的计算效率。
预算尝试Eigen库自带的FFT,相关资料如下:
EigenFFT
Eigen/FFT
可以看出,Eigen FFT并不成熟,借助了kissFFT实现的。
在stackoverflow网站上找到了参考代码,
eigen-fft-library
在本地计算机上试跑了代码
#define EIGEN_FFTW_DEFAULT
#include <iostream>
#include <unsupported/Eigen/FFT>
int main(int argc, char *argv[])
{
Eigen::MatrixXf A(3,3);
A

本文探讨了如何在项目开发中通过改进数据类型转换和利用Eigen库的FFT模块来提高矩阵计算和快速傅立叶变换的效率。作者尝试了Eigen自带的FFT并发现其效率不理想,转而考虑使用FFTW3库的函数,以减少虚部补全,旨在实现1.7s计算时间的进一步压缩。
最低0.47元/天 解锁文章
4723





