fftw_plan_dft_2d重复优化
2017-03-10 15:23
148 查看
原文:http://bbs.csdn.net/topics/330133751
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include "fftw3.h"
#define NNx 1025
#define NNy 1025
// ================= Main ================= //
int main(int argc, char *argv[])
{
fftw_complex *in, *out, *in2;
fftw_plan p,q;
clock_t start, end;
int i=0, j=0, k=0;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
in2 = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
for( i=0; i < NNx*NNy; i++)
{
in[i][0] = i;
in[i][1] = 0.0;
}
start=clock();
for( k=0; k<100; k++)
{
p=fftw_plan_dft_2d( NNx, NNy, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
q=fftw_plan_dft_2d( NNx, NNy, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
fftw_execute( p ); // repeat as needed//
fftw_execute( q );
}
end=clock();
printf(" FFTW : %f second\n", (double) (end-start)/CLOCKS_PER_SEC );
fftw_destroy_plan(p);
fftw_destroy_plan(q);
fftw_free(in);
fftw_free(out);
system("PAUSE");
return 0;
}
建议优化:
sign可以为正变换FFTW_FORWARD(-1),也可以为逆变换FFTW_BACKWORD(+1),实际上就是变换公式中指数项的符号。需注意FFTW的逆变换没有除以N,即数据正变换再反变换后是原始数据的N倍。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include "fftw3.h"
#define NNx 1025
#define NNy 1025
// ================= Main ================= //
int main(int argc, char *argv[])
{
fftw_complex *in, *out, *in2;
fftw_plan p,q;
clock_t start, end;
int i=0, j=0, k=0;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
in2 = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *NNx*NNy );
for( i=0; i < NNx*NNy; i++)
{
in[i][0] = i;
in[i][1] = 0.0;
}
start=clock();
for( k=0; k<100; k++)
{
p=fftw_plan_dft_2d( NNx, NNy, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
q=fftw_plan_dft_2d( NNx, NNy, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
fftw_execute( p ); // repeat as needed//
fftw_execute( q );
}
end=clock();
printf(" FFTW : %f second\n", (double) (end-start)/CLOCKS_PER_SEC );
fftw_destroy_plan(p);
fftw_destroy_plan(q);
fftw_free(in);
fftw_free(out);
system("PAUSE");
return 0;
}
建议优化:
// 这里初始化plan可能要花费几秒钟
sign可以为正变换FFTW_FORWARD(-1),也可以为逆变换FFTW_BACKWORD(+1),实际上就是变换公式中指数项的符号。需注意FFTW的逆变换没有除以N,即数据正变换再反变换后是原始数据的N倍。
相关文章推荐
- fftw_plan_dft_2d优化
- fftw_plan_dft_2d异常 使用技巧
- 使用FFTW的fftw_plan_dft_c2r_1d()由于未归一化结果错误的解决方案
- 递归优化 POJ1579 记忆化搜索 剪枝 去掉重复计算
- Web前端性能优化教程07:精简JS 移除重复脚本
- jquery ajax防止重复提交优化版
- Android布局优化之使用style提取重复使用属性
- 优化知识,利用ViewStub类来延迟加载视图 延迟加载和避免重复渲染视图
- Java2D 图像缓冲与重复绘制
- MySQL查询优化器源码分析--多表连接优化算法入口,choose_plan()
- web优化之-mvc js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
- 四叉树-2D平面的渲染剔除、碰撞次数优化
- oracle业务优化求助,在组合分区表中求本月与上月重复部分
- 【过滤重复】一次过滤重复数据的优化过程
- PLSQL_性能优化系列15_Oracle Explain Plan解析计划解读
- 如果有两个list<Object>只取出两个中不重复的(还可以优化,这里计数器没做好,暂时使用第三变量)
- dedecms 5.3/5.5全站伪静态含SEO重复记录优化
- 开发日志:JS防止表单重复提交【优化版本】
- 量化中max_bits重复计算之优化
- Oracle 使用 with as 优化重复查询