利用IT++搭建通信仿真平台
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;
- sudo ln -s */? /usr/local/lib/%
- sudo ln -s */? /usr/lib/%
- # *表示那三个文件的路径,?表示那个.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;
}
- g++ -o *** *.cpp -litpp
- #***为编译生成的文件的文件名,*为你建立的.cpp的名称
保存为:simple_itpp.cpp
g++ -o example simple_itpp.cpp -litpp
./example
如果一切顺利,会有如下结果
- 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]]
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++搭建通信仿真平台的更多相关文章
- 利用SOLR搭建企业搜索平台 之——MultiCore
Solr Multicore 是 solr 1.3 的新特性.其目是一个solr实例,可以有多个搜索应用. 下面着手来将solr给出的一个example跑出来.这篇文章是基于<利用SOLR搭建企 ...
- 高级PHP开发:利用PHPEMS搭建在线考试平台
今天给大家分享一个小技巧,就是利用PHP ems搭建在线考试平台:希望能给你给予帮助: 在给大家分享之前,这里推荐下我自己建的PHP开发-VIP资料出售平台 :638965404,不管你是小白还是大牛 ...
- 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml
来源:http://blog.csdn.net/zx13525079024/article/details/25310781 solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括 ...
- 利用SOLR搭建企业搜索平台 之——Solr索引基本操作
来源:http://blog.csdn.net/zx13525079024/article/details/25367239 我们来看下通过界面来操作SOLR,包括SOLR索引的添加,查询等基本操作. ...
- 利用SOLR搭建企业搜索平台 之——模式配置Schema.xml
来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\ex ...
- 利用SOLR搭建企业搜索平台 之——solr的查询语法
1. 首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜寻字段名称. 2. 查询规 ...
- 利用SOLR搭建企业搜索平台 之——配置文件
运行solr是个很简单的事,如何让solr高效运行你的项目,这个就不容易了.要考虑的因素太多.这里很重要一个就是对solr的配置要了解.懂得配置文件每个配置项的含义,这样操作起来就会如鱼得水! 在so ...
- 利用SOLR搭建企业搜索平台 之——运行solr
来源:http://blog.csdn.net/zx13525079024/article/details/24806131 本节主要介绍Solr的安装,其实Solr不需要安装.直接下载就可以了 ...
- 图像处理算法的仿真平台之VGA时序
一 概述 图像处理算法一般是用matla或OpenCV实现的,若是用FPGA实现,设计思路差别极大.matlab和opencv的优势:这些工具的优势在于可以方便地载入图像文件,或输出数据到图像文件, ...
随机推荐
- 使用canvas制作一个移动端画板
概述 使用canvas做一个画板,代码里涵盖了一些canvas绘图的基本思想,各种工具的类也可以分别提出来用 详细 代码下载:http://www.demodashi.com/demo/10503.h ...
- PHP扩展的基本结构
1.下载php源码 git clone https://github.com/php/php-src.git 2,创建扩展 cd php-src/ext/ ./ext_skel --extname= ...
- ios block常见的错误(二)——循环引用
这篇博文继续block的常见错误——循环引用. 循环引用是很多初学者不能察觉的,其产生的原因,是block中的代码会对对象进行强引用. 读者请阅读示例代码1,并思考示例代码1所创建的对象能否被正常销毁 ...
- Linux-Linux下安装redis报错"undefined reference to__sync_add_and_fetch_4"解决办法
如果出现这种错误可以在make的时候加上CFLAGS="-march=i686" 即 make CFLAGS="-march=i686" ----------- ...
- web服务器一些概念
一.Web服务器 Web服务基于HTTP协议,HTTP协议基于TCP/IP协议. HTTP请求底层必然是套接字,也就是TCP协议,HTTP服务器就是监听端口的一个守护进程. 它负责HTTP连接的建立. ...
- C# 获取当前打开的文件夹
最近做一个项目,有一个功能点需要获取当前打开的文件夹,网上查资料+自己摸索,整理出如下代码,鉴于网上完整的代码比较少,顾贴出来,以供参考.如有更好的建议,欢迎留言. 因demo,故没有完整的异 ...
- oc 代码块的使用
#import <UIKit/UIKit.h> #import "AppDelegate.h" int (^max)(int,int);//定义代码块,类似c的函数指针 ...
- mongodb win7 32位系统安装以及配置
今天安装 win7 32位系统 mongodb 费了好大劲..记录一下,希望相同的同学可以少踩点坑. 1.安装 我安装的是3.2.4 地址:http://downloads.mongodb.org/ ...
- FA_资产成批报废(流程)
2014-06-08 Created By BaoXinjian
- WPF绑定时要绑定属性,不要绑定字段
如题(就是加get;set;),绑定属性不出东西,不知道为什么...