安装fftw到window(vs2010)及使用fftw库函数实现4096点fft变换计算

WindowsFFTW库的安装:

  1. 从网站http://www.fftw.org/install/windows.html上下载最新的预编译文件:
      32-bit version: fftw-3.2.2.pl1-dll32.zip (1.8MB)
      64-bit version: fftw-3.2.2-dll64.zip (2.2MB)

  (这里建议下载32位机文件/64位向下兼容)

  

 

  2. 使用Lib.exe生成相应的Lib文件  :vs2010的安装路径为:D:\Program Files (x86)\Microsoft Visual Studio 10.0
     Lib.exe在VS的安装目录下:

     32位版本:D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE   (32位X86)

     64位版本:D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64   (AMD64位CPU)

       D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64(英特尔X86架构和ia64(ia64安腾架构,应用很少很少))

                  D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64 (AMD64位和英特尔X86CPU,最常用)

                  
     cmd进入到Lib.exe目录下,以64位为例:

   进入到D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64。

     将D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE:mspdb100.dll,mspdbcore.dll,mspdbsrv.exe,msobj100.dll 复制到D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64里面。

     把libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def也拷到bin目录对应的平台下——x86_amd64里面。

     执行Lib命令,生成库文件libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib

    32位版本:

    lib /def:libfftw3f-3.def
    lib /def:libfftw3-3.def
    lib /def:libfftw3l-3.def

    64位版本:

    lib /machine:x64 /def:libfftw3f-3.def
    lib /machine:x64 /def:libfftw3-3.def
    lib /machine:x64 /def:libfftw3l-3.def

  3.将libfftw3f-3.dll libfftw3-3.dll libfftw3l-3.dll放入C:\Windows\SysWOW64(32位放在windows/system32)中,然后将生成的库文件libfftw3-3.lib libfftw3f-3.lib   libfftw3l-3.lib放入vc中的lib文件夹,把fftw3.h放入vc中的include文件夹。

 

  新建工程应用:

    头文件:#include”fftw3.h“,

   设置参数:”项目“==>"项目属性"==>"配置属性"==>"链接器"==>"输入"==>"附加依赖项",将以下三项添加进去:

   libfftw3-3.lib

   libfftw3f-3.lib

   libfftw3l-3.lib

 

  代码:

  

 1 // test_6.cpp : 定义控制台应用程序的入口点。
 2 //
 3 #include "stdafx.h"
 4 #include "fftw3.h"
 5 #include <time.h>
 6 int main()
 7 {
 8     clock_t start,finish; //定义clock()函数返回值保存变量
 9     start=clock(); //启动计时,调用clock()开始每过千分之一毫秒start+1
10     fftw_complex *in, *out; //定义两个复数指针,分别存放输入输出
11     fftw_plan p;  //定义一个计划,计划名叫p
12     int N= 4096;  //fft计算的点数
13     in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); //开辟存放起始数据的内存空间
14     out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
15     /****打印初始值****/
16     for( int i=0; i < N; i++)
17     {
18         in[i][0] = i;
19         in[i][1] = 0.0;
20         printf("%6.2f+%6.2fj",in[i][0],in[i][1]);
21     }
22     printf("\n"); 
23     /***制定计划p**/
24     p=fftw_plan_dft_1d(N,in,out, FFTW_FORWARD, FFTW_ESTIMATE);
25     /***执行指定的计划p**/
26     fftw_execute(p);
27     /******打印输出fft变换之后的数据*****/
28     for(int j = 0;j < N;j++)
29     {
30         printf("%6.9f+%6.9fj\n",out[j][0],out[j][1]);
31     }
32     printf("\n");
33     /****完成计划之后,撤销计划******/
34     fftw_destroy_plan(p);
35     /*****释放内存空间******/
36     fftw_free(in); 
37     fftw_free(out);
38     /***统计执行时间****/
39     finish=(double)clock();
40     printf("time=%f\n",(double)(finish-start)/CLOCKS_PER_SEC);
41     return 0;
42 }

 

 

  

转载于:https://www.cnblogs.com/data1213/p/4980863.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值