繁体   English   中英

大矩阵的 2D FFT

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM