c++ - 使用 Matlab 对大数据 (16gB) 进行 FFT

标签 c++ matlab fft large-data

我正在尝试计算从大约 16 gB 大小的文本文件导入的大量数据的快速傅里叶变换。我试图想出一种在 matlab 中计算其 fft 的方法,但由于我的计算机内存 (8gB),它给我一个内存不足的错误。我尝试使用 memmap、textscan,但无法申请获取组合数据的 FFT。

谁能指导我如何进行傅立叶变换?我还试图在远程服务器上使用 C++ 代码进行傅立叶变换(使用定义),但执行起来需要很长时间。谁能告诉我应该如何处理这些大数据?

最佳答案

这取决于您需要的 FFT 分辨率。如果您只需要 1024 个点的 FFT,那么您可以将数据整形为或按顺序将其读取为 N x 1024 block 。获得这种格式后,您就可以将每个 FFT 结果的输出添加到 1024 点复数累加器。

如果您在 FFT 之后需要相同的分辨率,那么您需要更多的内存,或者一个特殊的 fft 例程,它不包含在 Matlab 中(但我不确定它在数学上是否可行通过缓冲小块进行部分 FFT 以获得完整分辨率)。

关于c++ - 使用 Matlab 对大数据 (16gB) 进行 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781733/

相关文章:

matlab - 矩阵作为Matlab函数的输入输出

matlab - 高频的 FFT 错误结果?

matlab - 频谱图及其含义

MATLAB:switch 语句问题

c++ - 包含 <execution> header 时出现 tbb 链接器错误

c++ - 字符串隐式转换运算符到 const char*/wchar_t *

java - 如何实现均衡器

python - 函数 numpy.fft.fftfreq 的含义

c++ 抽象类采用派生类参数

c++ - 使用指针对用户定义对象的 C++ 数组进行排序?