fftw 源码分析概要

fftw是MIT开源的一个快速傅里叶变换库,用C写成。但本次对源码的分析是在2.15版本上进行的,原因是最新的版本为了提升效率增加了很大的复杂性。但fftw库的主要代码结构可以通过之前的版本很好的表达出来。

但在阅读fftw3.x的源码时请注意,里面为了确保函数命名的唯一性,往往会给函数加上标识性的前缀名,而加前缀名的方法一般都是通过宏定义的方式实现的,比如将X()定义为连接字符串连接操作等;另外,还会存在一些需要配置才能生成的代码。许多相关的函数对应关系可以到config.h、config.c等中寻找。

下面是对源码分析的一个整体结构概要。

fftw 源码分析概要_第1张图片

 通过上面的图也可以看出,分析并没有涉及到具体变换部分,这是因为在fftw中,有些特殊长度序列的傅里叶变换程序中直接给出了特定情况下的高效计算方案(更多的是工程上的加速方法,并不具备一般性),常规的傅里叶变换还是采用一些基本分解算法实现的(当然,我也比较懒)。

下面的代码是fftw手册中给出的一个最基本的例子,上面的代码分析也是按照这个例子中调用的相关函数来展开的。

fftw 源码分析概要_第2张图片

具体函数的分析见其他文章:

fftw_malloc, fftw_free 函数分析;

fftw_create_plan(), fftw_create_plan_specific(), planner() 执行计划创建相关函数源码分析;

planner_wisdom(),fftw_wisdom_lookup(),fftw_measure_runtime(),init_test_array()函数代码分析;

 

 本次对fftw代码的分析比较简洁,只是简单的分析了一些函数,用一句打油诗概括我写这几篇博客的原因:

暑假回家闲不住,半缘爱好半敬神(雷霄骅)!

你可能感兴趣的:(fftw 源码分析概要)