关于FFTW3和NE10在树莓派2上执行FFT和IFFT的耗时比较

关于FFTW3和NE10在树莓派2上执行FFT和IFFT的耗时比较


硬件配置:Cortex-A8 四核 900MHz ARM
FFTW3 (2d r2r 512x512点 测试1000次)       (Exynos4412 Cortex-A9 四核 1.5GHz)
    FFT 时间:50.921s    50.328s    50.652s     21.939142s   24.838905s   25.043833s   25.115393s  24.624407s
    IFFT时间:51.286s    50.627s    50.823s     28.196007s   28.060387s   28.343035s   28.370632s 27.838223s
       (1d r2r 512x512点 测试1000次)
    FFT 时间:70.391s    72.134s     71.178s
    IFFT时间:96.774s    105.113s    104.367s      
       (2d c2c 512x512点 测试1000次)
   FFT 时间:241.491s  235.613s  236.373s
   IFFT时间:241.776s  240.890s  240.828s
NE10   (1d r2c 512x512点 测试1000次)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您好,您的问题是关于C++中使用fftw3库进行FFT计算的问题。我可以为您提供一些基本的信息和示例代码。 fftw3是一个高效的开源FFT库,它可以在多种平台上运行,并且提供了多种FFT计算方法和选项。在C++中使用fftw3库进行FFT计算的基本步骤如下: 1. 安装fftw3库。您可以从官方网站https://www.fftw.org/download.html下载适合您平台的版本,并按照官方文档进行安装。 2. 在C++代码中包含fftw3头文件,并链接fftw3库。 ```c++ #include <fftw3.h> #pragma comment(lib,"libfftw3-3.lib") ``` 3. 定义输入和输出数组,并创建fftw3计算计划。 ```c++ int n = 100; double* in = (double*)fftw_malloc(sizeof(double) * n); double* out = (double*)fftw_malloc(sizeof(double) * n); fftw_plan plan = fftw_plan_r2r_1d(n, in, out, FFTW_R2HC, FFTW_ESTIMATE); ``` 在上面的代码中,我们定义了一个长度为n的输入数组in和输出数组out,并创建了一个fftw3计算计划plan。fftw_plan_r2r_1d表示我们要计算一个实数序列的FFTFFTW_R2HC表示我们要使用实数序列的傅里叶变换,FFTW_ESTIMATE表示我们使用快速计算方法。 4. 填充输入数组,并执行计算计划。 ```c++ for (int i = 0; i < n; i++) { in[i] = sin(2 * M_PI * i / n); } fftw_execute(plan); ``` 在上面的代码中,我们填充了输入数组,然后使用fftw_execute函数执行计算计划。 5. 获取计算结果。 ```c++ for (int i = 0; i < n / 2 + 1; i++) { printf("%f ", out[i]); } ``` 在上面的代码中,我们打印了输出数组的前一半元素,这些元素表示了FFT计算的结果。 以上是一个基本的fftw3库的使用示例,您可以根据您的需求修改输入数组和计算计划的选项,以及处理输出数组的方式。希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值