博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win7 64位_VS2010的fftw3配置
阅读量:6565 次
发布时间:2019-06-24

本文共 2576 字,大约阅读时间需要 8 分钟。

配置过程参考了,但是按照该篇博客,在我的机子上并没有成功。

下面叙述我的配置过程,仅供参考!

 

[1]下载FFTW库

官方下载地址。

我电脑装的是win7 64位系统。

下载后,解压如图。

[2]使用Lib.exe生成相应的Lib文件

这一步注意路径是C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\lib.exe.

不注意路径可能出现下述错误。

在cmd将路径设置到amd64\路径下,将libfftw3-3.def,libfftw3l-3.def,libfftw3f-3.def拷贝到该路径下,执行Lib命令,

64位版本:

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

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

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

生成库文件libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib。注意:如果在cmd中输入命令后出现下图的错误,

请重新以管理员身份打开cmd,重复上面的配置命令,即可解决该问题.

[3]将生成的库文件libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib放入vc中的lib文件夹,可惜这么做没有成功,程序编译没有通过,试着将这些3个静态库放在了lib/amd64/路径下,编译通过了。

把fftw3.h放入vc中的include文件夹,放置dll文件时,这里需要注意64bit系统,依旧放在windows/system32文件中,我是这么做的,因为我在vs2010中按照正常的步骤创建了Win32控制台应用程序,试了一次,放在SysWOW64,程序编译通过了,但是程序在运行时提示缺少动态库。

[4]新建工程应用:

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

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

   libfftw3-3.lib

   libfftw3f-3.lib

   libfftw3l-3.lib

[5]程序运行,测例如下:

经过修改,8点fft,其结果和matlab fft结果验证一致,这里输出的是幅值,实部和虚部的模。

/* Start reading here */#include "fftw3.h"#define NUM_POINTS 8/* Never mind this bit */#include 
#include
#define REAL 0#define IMAG 1//#define M_PI 3.14159265358979323846void acquire_from_somewhere(fftw_complex* signal) { /* Generate two sine waves of different frequencies and * amplitudes. */ int i; for (i = 0; i < NUM_POINTS; ++i) { // double theta = (double)i / (double)NUM_POINTS * M_PI; /*signal[i][REAL] = 1.0 * cos(10.0 * theta) + 0.5 * cos(25.0 * theta); signal[i][IMAG] = 1.0 * sin(10.0 * theta) + 0.5 * sin(25.0 * theta);*/ signal[i][REAL] = (double)i; printf("start:[%d]=%f\n",i,signal[i][REAL]); signal[i][IMAG] = (double)0.0; }}void do_something_with(fftw_complex* result) { int i; for (i = 0; i < NUM_POINTS; ++i) { double mag = sqrt(result[i][REAL] * result[i][REAL] + result[i][IMAG] * result[i][IMAG]); printf("%g\n", mag); }}/* Resume reading here */int main() { fftw_complex signal[NUM_POINTS]; fftw_complex result[NUM_POINTS]; fftw_plan plan = fftw_plan_dft_1d(NUM_POINTS, signal, result, FFTW_FORWARD, FFTW_ESTIMATE); acquire_from_somewhere(signal); fftw_execute(plan); do_something_with(result); fftw_destroy_plan(plan); return 0;}

转载于:https://www.cnblogs.com/paly-programming/p/4918089.html

你可能感兴趣的文章
elasticsearch的percolator操作
查看>>
windows 定时任务:schtasks,定时关闭网易云音乐
查看>>
C# Note17: 使用Ionic.Zip.dll实现解压缩文件
查看>>
nullnullDataTable 排序
查看>>
Codeforces Ilya and Queries
查看>>
Viewport
查看>>
〖Linux〗Debian 7.1.0 Wheezy使用ltib报错的解决办法
查看>>
〖Android〗(how-to) fix k860/k860i buletooth.
查看>>
static与线程安全 -摘自网络
查看>>
jsf标签,jsp标签与jstl标签
查看>>
使用PHP CURL的POST数据
查看>>
struts2:表单标签
查看>>
ASP.NET MVC3 通过Url传多个参数方法
查看>>
遭遇sql server 2005 启动包未能正确加载需要重新安装错误,重装.NET FRAMEWORK经历分析...
查看>>
ASP.NET MVC上传文件----uploadify的使用
查看>>
简明 MongoDB 入门教程
查看>>
.NET Core 3.0中的数据库驱动框架System.Data
查看>>
北大AI公开课2019 | 雷鸣:人工智能革命与机遇
查看>>
英特尔开源计算机视觉数据标签工具CVAT,加速数据注释
查看>>
consule服务注册和发现 安装 部署
查看>>