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

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

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

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

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

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

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 源码分析概要相关推荐

  1. Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]

    摘要:本节主要来讲解Android10.0 logd.logcat读写日志源码内容 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Andro ...

  2. PostgreSQL源码分析

    PostgreSQL源码结构 PostgreSQL的使用形态 PostgreSQL采用C/S(客户机/服务器)模式结构.应用层通过INET或者Unix Socket利用既定的协议与数据库服务器进行通信 ...

  3. Tomcat 之 Session的活化和钝化 源码分析

    概要 Session活化:从硬盘上读取序列化的session到内存中 Session钝化:把内存中的session序列化到硬盘上 Tomcat中两种Session钝化管理器 session钝化机制是由 ...

  4. ExecutorCompletionService 源码分析

    概要 在ExecutorService的submit方法中可以获取返回值,通过Future的get方法,但是这个Future类存在缺陷,Future接口调用get()方法取得处理后的返回结果时具有阻塞 ...

  5. HashMap的结构及源码分析

    最近朋友说研究并发可以先从HashMap源码分析开始,所以就研究了下HashMap的结构和源码. 先从HashMap的结构开始. 我们都知道HashMap的用来存储key,value键值对数据的.既然 ...

  6. 鸿蒙轻内核源码分析:MMU协处理器

    摘要:本系列首先了解下ARM CP15协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下MMU相关汇编代码. 本文分享自华为云社区<鸿蒙轻内核A核源码分析系列六 MMU协处理器> ...

  7. 并发-阻塞队列源码分析

    阻塞队列 参考: http://www.cnblogs.com/dolphin0520/p/3932906.html http://endual.iteye.com/blog/1412212 http ...

  8. 霸榜巨作、阿里内部顶级专家整理(Redis 5设计与源码分析)

    前言 在开源界,高性能服务的典型代表就是Nginx和Redis.纵观这两个软件的源码,都是非常简洁高效的,也都是基于异步网络I/O机制的,所以对于要学习高性能服务的程序员或者爱好者来说,研究这两个网络 ...

  9. velocity源码分析:初始化之日志系统

    之前在"velocity源码分析:velocity初始化"文章中粗略地介绍了velocity整体的初始化过程,包括各个系统的初始化,本文主要介绍日志系统初始化. 日志系统类图: 概 ...

最新文章

  1. 浅述numpy中argsort()函数的用法
  2. 中山大学2020计算机学院复试分数线,2020中山大学研究生分数线汇总(含2016-2020历年复试)...
  3. java环境用openoffice转pdf
  4. 变分自编码器VAE:这样做为什么能成?
  5. 【SQL】表A多个字段,关联表B一个字段说明
  6. windows主机加固和评测
  7. nssl1337-矩形统计【单调栈】
  8. 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
  9. CSS字体设置的一些技巧(行高,加粗,强制换行等)
  10. 织梦在线报名平台php,DedeCMSv5
  11. 数据结构与算法之单链表(1)
  12. 【python】将excel转成json
  13. C++读取和写入文件(fstream等)
  14. 5G概念被热炒,运营商吃相不要太难看
  15. java随机生成测试数据
  16. 机械硬盘和固态硬盘区别 机械硬盘和固态硬盘哪个好
  17. 关于Gateway实现JWT登陆拦截过滤器
  18. 腾讯词向量下载链接(Tencent_AILab_ChineseEmbedding.txt)
  19. Aquaculture Equipment 水产养殖设备谷歌Google搜索量和海外市场竞争度分析
  20. WPF学习笔记16 BookDemo 2

热门文章

  1. BUUCTF:信息化时代的步伐
  2. flash在html中的种种
  3. 建设可持续社区离不开物业,你们小区的物业怎么样?
  4. FCL碰撞检测开源库的安装和链接
  5. 作业帮冯雪胡不归问题_阅读下面的文字,完成文后小题目。隐逸文化的精神价值“归去来兮,田园将芜胡不归。”陶渊明的这一声清啸,引得林泉激荡,岩穴来风,千载之下尚令人追慕不已。其实,这并非陶渊明...
  6. rasa core 中的逻辑
  7. VUECSS——最简单的为元素添加背景图片,并自适应div的大小
  8. 神庙逃亡2、愤怒的小鸟,1.8万款APP被指违反谷歌策略跟踪用户
  9. prometheus+grafana对数据库mysql监控
  10. Linux下C实现通过域名得到IP