码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-11-20 18:52:59      阅读:1202      评论:0      收藏:0      [点我收藏+]

标签:

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文件:

  lib命令是vs2010自带的工具,在vs2010安装目录下,任意找个有lib.exe工具的目录(我选择vc/bin/)将上面下载到的.zip文件解压到这个目录下(或者只从压缩包中取三个  文件:libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def到这个目录下)

  3.启动cmd命令窗口,将当前工作目录切换到这里的vc/bin下,因为要使用lib命令,否则可能提示lib命令系统找不到的问题。

  4.输出以下三个命令:生成对应文件的.dll和.lib文件:(当然生成的文件自动存放在vc/bin目录下)

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

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

  6.新建工程应用:

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

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

       libfftw3-3.lib

       libfftw3f-3.lib

       libfftw3l-3.lib

 

  遇到的问题:

  使用lib命令时,提示mspdb100.dll缺失,下载该脚本文件放进cmd命令工作目录——vc/bin下。

  创建工程,添加了附加项之后,编译提示:fatar error c1902。将vc/bin下的mspdb100.dll文件删除。

  编译通过后执行可执行程序提示:fatar error LNK1168 cannot open debug filename.exe for writting。打开任务管理器,或者内存清空删除filename.exe进程。

 

  代码:

  

 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 }

 

 

  

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

标签:

原文地址:http://www.cnblogs.com/data1213/p/4980863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!