没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1 / 5
第一部分、FFTW 介绍
一、FFTW 介绍
FFTW 由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换
(DFT)的计算库,开源、高效和标准 C 语言编写的代码使其得到了非常广泛的应用,Intel 的
数学库和 Scilib(类似于 Matlab 的科学计算软件)都使用 FFTW 做 FFT 计算。
FFTW 是计算离散 Fourier 变换(DFT)的快速 C 程序的一个完整集合。
1、它可计算一维或多维、实和复数据以及任意规模的 DFT;甚至包括正弦/余弦变换和
离散哈特莱变换(DHT)。
2、FFTW 输入数据长度任意。
3、FFTW 支持任意多维数据。
4、FFTW 支持 SSE、SSE2、 Altivec 和 MIPS 指令集。
5、FFTW 还包含对共享和分布式存储系统的并行变换。
二、FFTW 的基本结构:
FFTW 不是采用固定算法计算变换,而是根据具体硬件和变换参数来调整使用不同算法,
以期达到最佳效果。因此,变换被分成两个阶段。首先,FFTW 规划针对目标计算机的最快
变换的计算途径,并生成一个包含此信息的数据结构。然后,对输入数据进行变换。该规划
可以被多次使用。在一个典型的高性能应用中,总是在执行相同参数条件的任务,因而,相
对复杂但结果可被重复使用的初始化是值得的。另一方面,当你需要某一参数的单次变换,
初始化就显得过于费时。基于此 FFTW 提供基于启发式和先例的快速初始化。总的来说,FFTW
的一个显著特点就是,对某一参数类型的单次变换优势不大,但对于参数相同的多次变换具
有更快的平均速度。
FFTW 为了加快用户的使用集成速度,提供了三种不同层次的接口。
1. 连续数据的单一变换的基本接口。
2. 计算多重和步进阵列数据的高级接口。
3. 支持通用数据布局、多重和步进的顶级接口。
大部分的用户使用基本接口就可以满足需要,顶级接口需要更小心使用以避免出错,因
此需要花更多的时间去理解掌握。FFTW 不仅提供了数据自适应,还提供了高级用户定制功
能。例如,由于代码空间不足,可以去掉用户不需要的功能代码。相反,FFTW 还可以拓展
数据结构。
第二部分、FFTW 的数据类型
2.1、数据
任何调用 FFTW 的程序都要包含它的头文件 fftw3.h 及其库(在 windows 下共享库
fftw-
3.2.1.dll)。
2.1.1、复数类型
FFTW 使用包含两个元素的 double 型数据来表示一个复数,第一个元素表示实部,第二
个元素是虚部。
typedef double
fftw_complex[2];
2.1.2、精度
FFTW 默认使用双精度浮点进行运算,用户可以使用 float 和 long double 来改变运算
精度,虽然更高精度的数据进行运算理论上会得到更高精度的结果,但是由于软件系统和硬
件的限制往往适得其反,因此用户要结合软硬件 系统来选择 FFTW 的数据类型。
代码很单纯,复杂的是人。
- 粉丝: 77
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页