博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用IT++搭建通信仿真平台
阅读量:5821 次
发布时间:2019-06-18

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

IT++ is a C++ library of mathematical, signal processing and communication classes and functions。也就是说有了这个库,用C++编写通信仿真程序的方便程度接近于matlab。具体介绍和文件下载可以上。Matlab用的好好的,干嘛要用IT++?水木清华论坛里一个说的很清楚,“由于Matlab效率太低(除了可以验证算法外),所以需要更快的仿真平台。最好的平台无非就是自己写的C/C++程序,以及利用这个行业别人已经做好的库it++,非常方便,用它感觉就像是在C++下的Matlab。当然效率跟前者相比是不可同日而语。

1、Windows环境

,它提供“100% free powerful solution”。因为IT++要用的是MKL的三个libraries:LAPACK BLAS FFTW,这三个库是可以免费下载到的。该网站提供了在VS2005下安装IT++的步骤。只要按照网站说明进行安装,基本没有什么问题。

可参见:

 

2、Linux环境

可参见:

 

下载组件:

0)gfortran

sudo apt-get install gfortran 

1)fftw           ---http://www.fftw.org/       

安装参见

sudo apt-get install libfftw3-dev  //安装libfftw3-dev

2)blas          ---

安装参见

sudo apt-get install libblas-dev          //安装libblas-dev

3)lapack       ---

安装参见

一定要在编译完成BLAS后在编译LAPACK,因为LAPACK的testing包会用到BLAS库

sudo apt-get install liblapack-dev   //安装liblapack-dev

若编译完成,确认生成了三个.a文件(Linux静态库文件),三个.a文件的文件名为,blas_LINUX.a,lapack_LINUX.a,tmglib_LINUX.a;

  1. sudo ln -s */? /usr/local/lib/%  
  2. sudo ln -s */? /usr/lib/%  
  3. # *表示那三个文件的路径,?表示那个.a文件,%表示对应的静态库名(libblas.a,liblapack.a,libtmglib.a)  

3)itpp-4.2         ---http://itpp.sourceforge.net/current/installation.html
sudo apt-get install libitpp-dev
./configure
itpp-4.2 library configuration:
------------------------------------------------------------------------------
Directories:
  - prefix ......... : /usr/local
  - exec_prefix .... : ${prefix}
  - includedir ..... : ${prefix}/include
  - libdir ......... : ${exec_prefix}/lib
  - datarootdir .... : ${prefix}/share
  - docdir ......... : ${datarootdir}/doc/${PACKAGE_TARNAME}
Switches:
  - debug .......... : no
  - exceptions ..... : no
  - html-doc ....... : yes
  - shared ......... : yes
  - static ......... : no
  - explicit deps .. : no
Documentation tools:
  - doxygen ........ : yes
  - latex .......... : yes
  - dvips .......... : yes
  - ghostscript .... : yes
Testing tools:
  - diff ........... : yes
Optional modules:
  - comm ........... : yes
  - fixed .......... : yes
  - optim .......... : yes
  - protocol ....... : yes
  - signal ......... : yes
  - srccode ........ : yes
External libs:
  - BLAS ........... : yes
    * MKL .......... : no
    * ACML ......... : no
    * ATLAS ........ : no
  - LAPACK ......... : yes
  - FFT ............ : yes
    * MKL .......... : no
    * ACML ......... : no
    * FFTW ......... : yes
Compiler/linker flags/libs/defs:
  - CXX ............ : g++
  - F77 ............ : gfortran
  - CXXFLAGS ....... : -DNDEBUG -O3 -pipe
  - CXXFLAGS_DEBUG . : -Wall -ggdb -pipe
  - CPPFLAGS ....... :
  - LDFLAGS ........ :
  - LIBS ........... : -lfftw3 -llapack -lblas
make && make install 
make check  
在主文件夹的.bashrc中加入:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH   //source一下
其目的是为了使用it-config这个脚本以自动配置你的编译链接选项。然后在编译链接你的程序(my_prog.cpp)时使用以下命令
g++ `it-config --flags` -o my_prog my_prog.cpp `it-config --libs`
为了生成可调试的版本,用如下命令
g++ `it-config –flags --debug` -o my_prog my_prog.cpp `it-config –libs --debug`
体验自己编译好的itpp库

建立一个.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;
}

  1. g++ -o *** *.cpp -litpp  
  2. #***为编译生成的文件的文件名,*为你建立的.cpp的名称 

保存为:simple_itpp.cpp

g++ -o example simple_itpp.cpp -litpp
./example

如果一切顺利,会有如下结果

  1. a = [1 1.11111 1.22222 1.33333 1.44444 1.55556 1.66667 1.77778 1.88889 2]  
  2. b = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]  
  3. c = [1.1 1.31111 1.52222 1.73333 1.94444 2.15556 2.36667 2.57778 2.78889 3]  
  4. A = [[1 2]  
  5.  [3 4]]  
  6. B = [[-2 1]  
  7.  [1.5 -0.5]]  

 

FLAGS_DEBUG = `itpp-config --cflags-debug`

FLAGS_OPT   = `itpp-config --cflags-opt`
LIBS_DEBUG  = `itpp-config --libs-debug`
LIBS_OPT    = `itpp-config --libs-opt`

 

itpp::log2 只用于向量和矩阵

转载地址:http://llfdx.baihongyu.com/

你可能感兴趣的文章
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>