[英]2D FFT for Huge Matrix
我有 2533136*8 维度的二维向量,如下所示:
vector<vector<double>> DataChannel1(2533136, vector<double>(8));
我想用最快的解决方案从这个向量中获取 FFT,但我不知道如何!
你能帮我吗我该怎么做?
除了我使用 FFTW 库外,我的维度(ROW=2533136 和 COL=8)需要很长时间来计算。
const auto ROWS = 2533136;
const auto COLS = 8;
fftw_complex in[ROWS][COLS], out[ROWS][COLS];
fftw_plan g;
g = fftw_plan_dft_2d(ROWS, COLS, *in, *out, FFTW_FORWARD, FFTW_MEASURE);
我的问题解决了我非常感谢@GM,他/她正在考虑我的问题。 在我的问题中,大部分时间都花在了fftw_plan_dft_2d
中,我看到了FFTW
文档并理解了这个 function 的最后一个输入是Planner Flags
:
fftw_plan fftw_plan_dft_2d(int n0, int n1,
fftw_complex *in, fftw_complex *out,
int sign, unsigned flags)
FFTW 中的所有计划程序例程都接受 integer 标志参数,它是下面定义的零个或多个标志常量的按位或 ('|')。 这些标志控制计划过程的严格性(和时间),并且还可以对所采用的变换算法类型施加(或解除)限制。
规划严谨的标志
FFTW_ESTIMATE
指定,而不是对不同算法的实际测量,使用简单的启发式方法来快速选择(可能是次优的)计划。 使用此标志,在规划期间不会覆盖输入/输出 arrays。
FFTW_MEASURE
告诉 FFTW 通过实际计算几个 FFT 并测量它们的执行时间来找到优化的计划。 根据您的机器,这可能需要一些时间(通常是几秒钟)。 FFTW_MEASURE 是默认计划选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.