曲波变换是在做信号处理是可能会用到的一种稀疏变换,其源程序包可在 CurveLab 下载,实现方式是基于快速傅里叶变换(FFTW)。截至目前,CurveLab发布的源程序包仍然是基于fftw-2.1.5,然而FFTW目前已全面支持fftw3,在Windows系统上并没有fftw2的版本支持。因此,本文将介绍如何在Windows上安装使用曲波变换。
我们需要重源码编译 FFTW 以及 CurveLab。CurveLab 内提供有 matlab 版本程序以及 mex 混编程序,编译该部分则可以在MATLAB中使用C++的曲波变换,比 matlab 版本更加快速。
操作系统:Win 10, 64位
准备工作: 安装MinGW-w64, 安装MSYS2; 解压 fftw-2.1.5, 解压Curvelab-2.1.3;
(如果是32位系统,安装MinGW即可)
需要的工具: MinGW64, MSYS2, fftw-2.1.5,CurveLab-2.1.3
-
MinGW-w64 及 msys2 安装
下载安装程序按照官网教程安装即可。注意需要利用msys2安装上make,在msys2中,输入
pacman -S make
即可自动安装。
将MingGW-w64以及msys2的bin
目录添加到系统路径;比如我的是
编译 FFTW
2.1 打开cmd, 进入fftw-2.1.5路径。
2.2 输入sh
进入bash环境
2.3 设置编译配置,输入
./configure --prefix=/your/install/path --with-pic
其中/your/install/path
是你想要安装到的目录,这是一个绝对路径。比如我安装的位置是/d/Toolbox/fftw
,意思是在D盘Toolbox文件夹下的fftw文件夹。
2.4 输入make
,进行编译,大概需要10分钟;
2.5 输入make install
,开始安装。-
编译 CurveLab
3.1 进入 CurveLab-2.1.3 解压文件夹,修改makefile.opt
文件中FFTW_DIR
值为 fftw-2.1.5 解压文件的绝对路径 (上一步已在该文件夹下编译fftw)。如果需要编译 mex 文件以提供更快速的 matlab 版本曲波变换,则需要指定mex 编译器(修改MEX
的值)。我的路径配置如下,大家根据自己的路径进行配置
3.2 在 shell 中输入make lib
,编译静态链接库文件;
3.3. 在 shell 中输入make matlab
, 编译mex 文件;
至此,所有编译工作已经完成。
2021.07.07 更新
首先给各位阅读了本文章但未能解决问题的朋友说声抱歉,本人由于工作原因已长时间未登陆简书,抱歉没有及时解决各位的问题。
我已将我在64位 Windows 系统下编译好的 CurveLab 包上传至百度网盘,有需要的朋友可前去下载,提取码 fh7k。谢谢大家。