Windows下FFTW的安装

本文目的:学习安装fftw!

参考资源:

百度文库

注明:我的电脑是32位的,xp系统,安装的是VC++6.0中文版,本文大部分为转载,仅供个人学习收藏之用!


一,简介
FFTW是用来计算一维或者多维的离散傅里叶变换,输入可以为实数序列也可以为复数序列的C语言的子函数库,FFTW是免费软件,是作为fft函数库的各种应用的上佳选择。

二,安装步骤
1. 从网站http://www.fftw.org上下载最新的预编译文件: 32-bit version: fftw-3.2.2.pl1-dll32.zip (1.8MB)

2.安装lib.exe
其实这是VC自带的工具,在VC6.0有,我台式机上安装了VC++6.0,
路径如下:C:\Program Files\Microsoft Visual Studio\VC98\Bin (VC6.0的目录)

3.打开Windows的命令提示行窗口(CMD窗口),切换到当前目录到
C:\Program Files\Microsoft Visual Studio\VC98\Bin
即在cmd中输入cd C:\Program Files\Microsoft Visual Studio\VC98\Bin

4.将mspdb80.dll,mspdbcore.dll,mspdbsrv.exe,msobj80.dll 复制到上面路径的bin文件夹里,至于这几个文件在哪里找出来的?网上说在“\vs安装目录\Common7\IDE 里面的”,我是在我安装的VS2010(能和VC++6.0共存的)的安装目录下Microsoft Visual Studio 10.0找到了其中两个,其中另外一个是将文件名复制到百度下载的,还有一个是在C盘海量搜索找出来的!然后把libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def也拷到这个目录的bin下面。

5.然后在cmd中输入lib.exe(即运行),会有如下提示:

Windows下FFTW的安装_第1张图片

这时候ib命令就可以使用了。

6,在cmd进入上面一直提到的bin目录,并依次运行:
lib /machine:i386 /def:libfftw3-3.def
lib /machine:i386 /def:libfftw3f-3.def
lib /machine:i386 /def:libfftw3l-3.def

7,.将libfftw3f-3.dll libfftw3-3.dll libfftw3l-3.dll放入windows/system32中,然后将生成的库文件libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib放入vc中的lib文件夹,即C:\Program Files\Microsoft Visual Studio\VC98\Lib下;把fftw3.h放入include文件夹。

8.然后在工程》设置》连接》分类选择输入,在对象/库模块中添加以下三项
libfftw3-3.lib
libfftw3f-3.lib
libfftw3l-3.lib
即如下效果:

Windows下FFTW的安装_第2张图片

9,测试安装成功与否
新建一个windows console Application工程,Copy以下代码:

#include "fftw3.h"
int main()
{
fftw_complex *in,*out;            //复数类输入输出指针
fftw_plan p;     //声明傅里叶计划变量p
int N=8;
int i;
int j;
in=(fftw_complex*)fftw_malloc(sizeof(fftw_complex)*N);     //分配输入数据内存
out=(fftw_complex*)fftw_malloc(sizeof(fftw_complex)*N);      //输出
for(i=0;i<</SPAN> N; i++)
{
in[i][0]=1.0;   //实数
in[i][1]=0.0;     //虚数
printf("%6.2f",in[i][0]);
}
printf("\n");
p=fftw_plan_dft_1d(N,in,out,FFTW_FORWARD,FFTW_ESTIMATE);    //配置计算计划
fftw_execute(p);         //执行配置计划,快速傅里叶转换
for(j=0;j <</SPAN> N;j++)   //看不懂????????????????????
{
printf("%6.2f",out[j][0]);
}
printf("\n");  //换行
fftw_destroy_plan(p);      //销毁数据
fftw_free(in);       //释放输入数据
fftw_free(out);        //释放输出数据
return 0;
}
妈淡,说真的,本程序没看懂!
 
其他
fftw_plan_dft_1d表示一维的快速傅里叶变换。
FFTW_FORWARD是正变换 ;
FFTW_BACKWARD是逆变换。
FFTW_MEASURE表示FFTW会先计算一些FFT并测量所用的时间,以便为大小为n的变换寻找最优的计算方法。
10,运行结果

Windows下FFTW的安装_第3张图片



你可能感兴趣的:(Windows下FFTW的安装)