赞
踩
装了一天的itpp库,遇到各种bug,终于在今天上午大功告成。有点儿小兴奋,写个文档在这里Mark一下,以备将来使用,也为后人指路。
我的环境:ubuntu10.04 fftw-3.3 lapack-3.3.1 itpp-4.2
请先安装gfortran
sudo apt-get install gfortran
itpp:http://itpp.sourceforge.net/stable/index.html
BLAS:http://www.netlib.org/blas/
LAPACK:http://www.netlib.org/lapack/
一个比较有用的链接:http://blog.c114.net/html/83/496683-65006.html
好,下面开始进入正题。
1、下载itpp依赖的三个包,BLAS、LAPACK、FFTW;
2、编译上述三个包,其中,一定要在编译完成BLAS后在编译LAPACK,因为LAPACK的testing包会用到BLAS库;
3、编译完成后,确认你生成了三个.a文件(Linux静态库文件),三个.a文件的文件名为,blas_LINUX.a,lapack_LINUX.a,tmglib_LINUX.a;
4、为上述三个.a文件建立链接,命令如下
- sudo ln -s */? /usr/local/lib/%
- sudo ln -s */? /usr/lib/%
-
- #*表示那三个文件的路径,?表示那个个.a文件,%表示对应的静态库名(libblas.a,liblapack.a,libtmglib.a)
当然,你把这三个文件重命名了,拷贝到/usr/local/lib和/usr/lib下也可以;
5、安装libblas-dev和liblapack-dev,这两个包应该是blas库和lapack的驱动文件,我在这里耽误的时间太多了
sudo apt-get install libblas-dev liblapack-dev
./configure --with-blas=/usr/local/lib/libblas.a --with-lapack=/usr/local/lib/liblapack.a
make
sudo make install
make check
建立一个.cpp文件,将以下内容写入
- #include <itpp/itbase.h>
-
- using namespace itpp;
-
- //These lines are needed for use of cout and endl
- using std::cout;
- using std::endl;
-
- int main()
- {
- //Declare vectors and matricies:
- vec a, b, c;
- mat A, B;
-
- //Use the function linspace to define a vector:
- a = linspace(1.0, 2.0, 10);
-
- //Use a string of values to define a vector:
- b = "0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0";
-
- //Add two vectors:
- c = a + b;
-
- //Print results:
- cout << "a = " << a << endl;
- cout << "b = " << b << endl;
- cout << "c = " << c << endl;
-
- //Use a string to define a matrix:
- A = "1.0 2.0;3.0 4.0";
-
- //Calculate the inverse of matrix A:
- B = inv(A);
-
- //Print results:
- cout << "A = " << A << endl;
- cout << "B = " << B << endl;
-
- //Exit program:
- return 0;
-
- }
执行
g++ -o *** *.cpp -litpp
#***为编译生成的文件的文件名,*为你建立的.cpp的名称
如果一切顺利,会有如下结果
a = [1 1.11111 1.22222 1.33333 1.44444 1.55556 1.66667 1.77778 1.88889 2]
b = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]
c = [1.1 1.31111 1.52222 1.73333 1.94444 2.15556 2.36667 2.57778 2.78889 3]
A = [[1 2]
[3 4]]
B = [[-2 1]
[1.5 -0.5]]
附录:BLAS、LAPACK、FFTW包的安装
1、BLAS包的安装
下载解压后,cd到文件件,执行
make
2、LAPACK包的安装
下载解压后,cd到文件夹,将1中生成的blas_LINUX.a拷贝到文件夹,依次执行
mv make.inc.example make.inc
make
3、FFTW包的安装
下载解压后,cd到文件夹,依次执行
./configure
make
sudo make install
如果有什么问题,请在下面留言,谢谢!
补充IT++库的一些用途
IT++是一个数学,信号处理和通信类功能的C++库。它的主要用途是模拟通信系统,并进行研究相关领域的通信。它综合了Matlab的功能和C的速度,适合于信号处理等领域。
功能和特点
模板阵列和堆叠的集装箱类
命令和文件的论点分析器
模板向量和矩阵类
稀疏向量和矩阵类
载体功能和矩阵类
矩阵分解等特征
求解线性方程组
随机数代
二进制和伽罗瓦类型(标量,矢量和矩阵)
一体化的一维职能
无条件的非线性优化
统计类
过滤功能和类
频域滤波
FFT算法,理论,变换,和Hadamard变换
时域和频域窗口
评估和寻找根源的多项式(逆行动)
滤波器的设计功能
快速独立分量分析
矢量调制器(如OFDM和MIMO )
OFDM系统和CDMA调制器
多径信道(包括频率单位和频率选择性)
海明,格雷,CRC码
基于事件的仿真类
信号和简化语法
TCP连接客户端和服务器
选择性重复传
标量化和矢量量化类
高斯混合模型
阅读和保存几种不同的音频文件格式
阅读和保存不同的图像格式
二进制文件格式,最基础的IT + +类型
定点标量,矢量和矩阵类型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。