FFTW是一个可以进行可变长度一维或多维DFT的开源C程序库,是目前最快的FFT算法实现。

本文简述了在Windows平台上,如何在C++中调用FFTW,所使用的IDE为Visual Studio 2017。

FFTW的详细信息可在 http://www.fftw.org 中查看

获取FFTW

http://www.fftw.org/install/windows.html 中下载32位或64位版并解压

生成lib文件

打开VS自带的 “x86_x64 Cross Tools Command Prompt” ,cd到之前的解压文件夹

键入命令

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

如果是64位则键入命令

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

以上命令产生了lib文件libfftw3-3.lib,应不同精度要求也可对libfftw3f-3.def及libfftw3l-3.def文件使用相同命令来产生相应lib文件

在C++中调用FFTW

将下列三个文件粘贴到与cpp文件相同的目录下

  • fftw3.h
  • libfftw3-3.dll
  • libfftw3-3.lib

在cpp文件中加入代码

#include "fftw3.h"
#pragma comment(lib, "libfftw3-3.lib")

测试代码

#include <iostream>

#include "fftw3.h"
#pragma comment(lib, "libfftw3-3.lib") //实部与虚部
#define REAL 0
#define IMAG 1 using namespace std; int main() {
/*
*fftw_complex 是FFTW自定义的复数类
*引入<complex>则会使用STL的复数类
*/
fftw_complex x[5];
fftw_complex y[5]; for (int i = 0; i < 5; i++) {
x[i][REAL] = i;
x[i][IMAG] = 0;
} //定义plan,包含序列长度、输入序列、输出序列、变换方向、变换模式
fftw_plan plan = fftw_plan_dft_1d(5, x, y, FFTW_FORWARD, FFTW_ESTIMATE); //对于每个plan,应当"一次定义 多次使用",同一plan的运算速度极快
fftw_execute(plan); for (int i = 0; i < 5; i++) {
cout << y[i][REAL] << " " << y[i][IMAG] << endl;
} //销毁plan
fftw_destroy_plan(plan); cout << "\nPress Enter to exit..." << endl;
cin.get(); return 0;
}

输出结果

10  0
-2.5 3.44095
-2.5 0.812299
-2.5 -0.812299
-2.5 -3.44095 Press Enter to exit...

在C++中调用FFTW的更多相关文章

  1. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

  2. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  3. 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数

    [问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...

  4. Salesforce Apex页面中调用远端网络服务

    本文介绍了Salesforce Apex页面中调用远端网络服务的实现过程. ### 注册远端网络服务 在使用Apex代码调用远端网络服务之前,首先需要在Salesforce中注册远端网络服务地址, 本 ...

  5. 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)

    之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个“坑”坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注:这里的异步方法都是指 ...

  6. C#在winform中调用系统控制台输出

    在Winform程序中有时候调试会通过Console.Write()方式输出一些信息,这些信息是在Visual Studio的输出窗口显示. 所以就会想,能不能调用系统的Cmd窗口输出呢,经过一番查阅 ...

  7. EC笔记,第二部分:9.不在构造、析构函数中调用虚函数

    9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...

  8. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  9. 在.net中调用Delphi dll的Pchar转换

    Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是De ...

随机推荐

  1. ARM64编译工具链下载

    下面是自制的用于编译ARMv8指令的交叉编译工具链: 1.运行在PC上,支持SVE指令,不支持SVE ACLE,版本GCC9.2 https://pan.baidu.com/s/1_NnwajWCel ...

  2. pod install/update失败:Failed to connect to 127.0.0.1 port 1080: Connection refused

    出现这类错误,通常是因为代理发生的,取消代理即可! 1.查看有无相关代理: git config --global http.proxy git config --global https.proxy ...

  3. Jupyter Notebook 更换主题(背景、字体)

    通过命令行窗口或 Anaconda Prompt 窗口 1.安装 Jupyter 主题 pip install jupyterthemes 2.更新 Jupyter 主题 (可选) pip insta ...

  4. Discuz!开发之时间处理函数dgmdate()详解

    使用过Discuz!的朋友都会知道Discuz!的时间可以显示成多少秒前.多少分钟前.几个小时前.几天前等等,而不是单纯的显示标准时间,这样的时间显示方式就更显得人性化了!   那么Discuz!是如 ...

  5. 【java异常】Building workspace has encountered a problem. Error

    可能是workspace设置错误,检查一下 或者把项目重新下一下,或者重新maven导入

  6. Ant Design Pro 鉴权/ 权限管理

    https://pro.ant.design/docs/authority-management-cn ant-design-pro 1.0.0 V4 最近需要项目需要用扫码登录,因此就使用antd ...

  7. gulp babel 配置不报错也没有输出结果的原因

    环境: "@babel/core": "^7.1.6", "gulp-babel": "^8.0.0", "@ ...

  8. 转载-mysql中文编码问题

    具体原理见:MySQL:windows中困扰着我们的中文乱码问题 分割线: 我的电脑win7 64位,这个问题可能是所有win系统出现的问题 我出现的问题: 是正确的 出现了中文的张三,则错误,编码错 ...

  9. ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)

    前言 上节实现远程更新是更新的STM32F103C8T6的单片机 GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定 ...

  10. Problem A. 最近公共祖先 ———2019.10.12

    我亲爱的学姐冒险跑去为我们送正解 但是,,,, 阿龙粗现了! cao,, 考场期望得分:20   实际得分:20 Problem A. 最近公共祖先 (commonants.c/cpp/pas) 最近 ...