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++的步骤。只要按照网站说明进行安装,基本没有什么问题。

可参见:http://blog.sina.com.cn/s/blog_4dab1a5a0100sgid.html

2、Linux环境

可参见:http://blog.csdn.net/luotuo818/article/details/6767594

下载组件:

0)gfortran

sudo apt-get install gfortran

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

安装参见http://hi.baidu.com/jerry_916/blog/item/f9fc86428aa78c0e9213c65f.html

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

2)blas          ---http://www.netlib.org/blas/

安装参见

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

3)lapack       ---http://www.netlib.org/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 只用于向量和矩阵

利用IT++搭建通信仿真平台的更多相关文章

  1. 利用SOLR搭建企业搜索平台 之——MultiCore

    Solr Multicore 是 solr 1.3 的新特性.其目是一个solr实例,可以有多个搜索应用. 下面着手来将solr给出的一个example跑出来.这篇文章是基于<利用SOLR搭建企 ...

  2. 高级PHP开发:利用PHPEMS搭建在线考试平台

    今天给大家分享一个小技巧,就是利用PHP ems搭建在线考试平台:希望能给你给予帮助: 在给大家分享之前,这里推荐下我自己建的PHP开发-VIP资料出售平台 :638965404,不管你是小白还是大牛 ...

  3. 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml

    来源:http://blog.csdn.net/zx13525079024/article/details/25310781 solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括 ...

  4. 利用SOLR搭建企业搜索平台 之——Solr索引基本操作

    来源:http://blog.csdn.net/zx13525079024/article/details/25367239 我们来看下通过界面来操作SOLR,包括SOLR索引的添加,查询等基本操作. ...

  5. 利用SOLR搭建企业搜索平台 之——模式配置Schema.xml

    来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\ex ...

  6. 利用SOLR搭建企业搜索平台 之——solr的查询语法

      1. 首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜寻字段名称. 2. 查询规 ...

  7. 利用SOLR搭建企业搜索平台 之——配置文件

    运行solr是个很简单的事,如何让solr高效运行你的项目,这个就不容易了.要考虑的因素太多.这里很重要一个就是对solr的配置要了解.懂得配置文件每个配置项的含义,这样操作起来就会如鱼得水! 在so ...

  8. 利用SOLR搭建企业搜索平台 之——运行solr

    来源:http://blog.csdn.net/zx13525079024/article/details/24806131 本节主要介绍Solr的安装,其实Solr不需要安装.直接下载就可以了    ...

  9. 图像处理算法的仿真平台之VGA时序

    一  概述 图像处理算法一般是用matla或OpenCV实现的,若是用FPGA实现,设计思路差别极大.matlab和opencv的优势:这些工具的优势在于可以方便地载入图像文件,或输出数据到图像文件, ...

随机推荐

  1. linux 2>&1的用法

    linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2.STDIN就是标准输入,默认从键盘读取信息:STDOUT是标准输出,默认将输出结果输出至终端,也就 ...

  2. WinForm如何调用Web Service

    参考地址 今天看了李天平关于WinForm调用Web Service的代码,我自己模仿做一个代码基本都是复制粘贴的,结果不好使.郁闷的是,又碰到那个该死的GET调用Web Service,我想肯定又是 ...

  3. POJ 3006 Dirichlet's Theorem on Arithmetic Progressions (素数)

    Dirichlet's Theorem on Arithmetic Progressions Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  4. Android 实现 HttpClient 请求Https

    如题,默认下,HttpClient是不能请求Https的,需要自己获取 private static final int SET_CONNECTION_TIMEOUT = 5 * 1000; priv ...

  5. TCP/IP具体解释学习笔记--TCP数据流

    1.TCP的交互数据流 (1)基本概念 所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节.比如聊天等telnet的软件的TCP数据流就属于TCP交互数 ...

  6. shell 提取mysql指定数据库下表创建语句为单文件

    dbcn="mysql -h172.16.1.194 -uroot -p123456"; db=dsp_ad_center; ii=0; ct=`$dbcn -N -e " ...

  7. Nginx 的线程池与性能剖析【转载】

    正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为此,NGIN ...

  8. python-循环与判断练习题

    一.设计这样一个函数,在指定的文件夹上创建10个文本,以数字给它们命名. def text_creation(): path ='D:/study/python3/w/' for name in ra ...

  9. Unityclient框架笔记二(组件实体开发模式的思考)

    Unity的Entity-Component-System实现的很美丽,很灵活.许多文章也对这样的组件实体的开发模式倍加推崇.由于它契合这么一条规则:优先使用组合而不是继承. 可是实际开发过程中,限制 ...

  10. python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...