ros上的eigenface在哪啊

随笔 - 35, 文章 - 0, 评论 - 1, 引用 - 0
最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧。主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐。
Armadillo:C++下的Matlab替代品
许可证:MPL 2.0
目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便,有一个简易的Matlab到Armadillo的语法转换。下面列了一些Armadillo的特性:
支持整数,浮点数,和复数矩阵。
支持矩阵逐元素操作,包括abs & conj & conv_to & eps & imag/real & misc functions (exp, log, pow, sqrt, round, sign, ...) & trigonometric functions (cos, sin, ...)等等。
支持矩阵分块操作。
支持对整体矩阵的操作diagvec & min/max & prod & sum & statistics (mean, stddev, ...)&& accu & as_scalar & det & dot/cdot/norm_dot & log_det & norm & rank & trace等等。
Matlab用户,你甚至可以找到你熟悉的hist&& histc&& unique&& cumsum&& sort_index&& find&& repmat&& linspace等函数。
除了自带的矩阵基本运算之外,可自动检测是否安装有BLAS,或更快的&, Intel&, AMD&,并使用他们替代自带基本运算实现。
提供接口使用LAPACK进行矩阵分解运算,svd&& qr&& lu&& fft等等。
提供了稀疏矩阵类,支持常用操作,但暂时没有矩阵分解的实现。
更新比较活跃,有一些计算机视觉、机器学习、物理方面的开源项目在使用,比如&(Machine Learning Library)。
总体来讲很好用的矩阵库,速度上因为可以使用等库进行加速,因此还是不错的。网上可以找到一个叫&的人写的关于和eigen及opencv的速度比较做参考,速度略优。不过也由于依赖LAPACK等库完成矩阵分解计算,在windows上运行可能会比较痛苦。
Eigen3:强大且只需头文件
许可证:主要为MPL 2.0,部分有来自第三方的代码为LGPL
非常强大的矩阵运算库,我一直在用,大家用了都说好。使用类似Matlab的方式操作矩阵,可以在查看官方的与Maltab的对应关系,个人感觉单纯讲和Matlab的对应的话,可能不如Armadillo对应的好,但功能绝对强大。Eigen包含了绝大部分你能用到的矩阵算法,同时提供许多第三方的接口。Eigen一个重要特点是没有什么依赖的库,本身仅有许多头文件组成,因此非常轻量而易于跨平台。你要做的就是把用到的头文件和你的代码放在一起就可以了。Eigen的一些特性:
支持整数、浮点数、复数,使用模板编程,可以为特殊的数据结构提供矩阵操作。比如在用进行做优化问题(比如bundle adjustment)的时候,有时候需要用模板编程写一个目标函数,ceres可以将模板自动替换为内部的一个可以自动求微分的特殊的double类型。而如果要在这个模板函数中进行矩阵计算,使用Eigen就会非常方便。
支持逐元素、分块、和整体的矩阵操作。
内含大量矩阵分解算法包括LU,LDLt,QR、SVD等等。
支持使用Intel&加速
部分功能支持多线程
稀疏矩阵支持良好,到今年新出的Eigen3.2,已经自带了SparseLU、SparseQR、共轭梯度(ConjugateGradient solver)、bi conjugate gradient stabilized solver等解稀疏矩阵的功能。同时提供、等外部稀疏矩阵库的接口。
支持常用几何运算,包括旋转矩阵、四元数、矩阵变换、AngleAxis(欧拉角与Rodrigues变换)等等。
更新活跃,用户众多(Google、WilliowGarage也在用),使用Eigen的比较著名的开源项目有ROS(机器人操作系统)、PCL(点云处理库)、Google&Ceres(优化算法)。OpenCV自带到Eigen的接口。
总体来讲,如果经常做一些比较复杂的矩阵计算的话,或者想要跨平台的话,非常值得一用。
OpenCV:方便的计算机视觉计算库
许可证:目前是BSD
OpenCV在计算机视觉领域名气实在是太大了,而且最近几年库里的算法开始爆炸式的增长,最近貌似计划推出OpenCV 3了(参见)。有人开始抱怨OpenCV现在内容太杂了,不过这样的好处就是从是研究开发的话,一个库就可以得到大部分计算机视觉的流行算法,省去了很多麻烦。
OpenCV自带的矩阵计算功能算不上是专业的矩阵计算库,但是如果你用C++写机器学习、计算机视觉的程序,一定会经常用到。OpenCV的矩阵计算功能还算比较完善,虽然速度略差劲,但用在大多数的开发和研究领域也是足够了。特别是OpenCV 2.2之后提供了类Matlab的矩阵C++接口,使得直接使用OpenCV进行矩阵计算变得简单易用。列两个比较值得一提的特点:
大量计算机视觉、机器学习相关的矩阵操作,非常方便。比如PCA、LDA、三维空间投影等等。
自带并行加速的矩阵计算功能。其中cv::gpu模块提供了CUDA支持的GPU矩阵计算功能,cv::ocl模块提供了OpenCL支持的并行矩阵计算功能。可以非常方便的进行并行矩阵计算,不过不足的是这两个模块还暂时缺少矩阵分解的实现。我曾见过朋友在做深度学习的时候用cv::ocl模块进行大矩阵乘法,貌似效果还不错。
ViennaCL:并行矩阵计算
许可证:MIT
作者来自维也纳大学,开发了一套Vienna*系列的开源软件,其中还包括(symbolic math符号计算)、(有限元)等等。ViennaCL在后台支持OpenCL、OpenMP和CUDA,可以方便地使用各种型号的CPU或GPU进行并行计算。
目前矩阵类型支持float和double,1.4.2版尚不支持复数矩阵。
支持常用的矩阵运算和分解。
接口很有好,并提供接口到uBLAS、Eigen、MTL 4等矩阵库。
安装使用有非常详细的。
PETSc:大规模并行科学计算
许可证:Copyright University of Chicago (GPL compatible)
PETSc(Portable, Extensible Toolkit for Scientific Computation)&&是美国能源部ODE2000支持开发的20多个ACTS工具箱之一,由Argonne国家实验室开发的可移植可扩展科学计算工具箱,主要用于在分布式存储环境高效求解偏微分方程组及相关问题。PETSc所有消息传递通信均采用MPI标准实现。线性方程组求解器是PETSc的核心组件之一,PETSc几乎提供了所有求解线性方程组的高效求解器,既有串行求解也有并行求解,既有直接法求解也有迭代法求解。对于大规模线性方程组, PETSc提供了大量基于Krylov子空间方法和各种预条件子的成熟而有效的迭代方法,以及其他通用程序和的接口。PETSc具有一般库软件所具备的高性能、可移植等优点,而且使得PETSc内部功能部件的使用非常方便,接口简单而又适用面广,可以缩短开发周期,减少工作量。[直接粘了]。
PETSc在网上可一找到很多英文资料,使用也比较广泛。不过在学校实验室的一般的科学计算可能接触的还比较少。推荐一个YouTube(可能要FQ)的五集PETSc简单入门《》。
其他的矩阵计算库和资料
在Stackexchange上有一个帖子《》里面搜罗了许多矩阵运算库。另外INRIA有人写了一个文档《》,对常见的矩阵运算库进行了总结。除了上面提到的几个库之外,下面还有一些比较常用或坚持更新的矩阵库:
:Boost包中的BLAS库接口,据说速度一般。
:GNU Scientific Library自带的矩阵运算,据说速度一般。
:&version 4,类似Eigen和Armadillo,有开源版本。
:和PETSc同是美国能源部ODE2000支持开发的20多个ACTS工具箱之一,用于大规模计算。WINDOWS共享上网,ROS软路由哪个好_百度知道
WINDOWS共享上网,ROS软路由哪个好
网吧。80多台机器,光纤接入,以前一直用WINDOWS98系统Internet共享,来带整个网吧上网,到也没什么大问题,前段时间发现淘宝 中关村在线 优酷这几个网站,总是不爱打开,要反复刷新才有可能打开。昨天按网上教程作了个ROS软路由用上了,发现这三个网站一打就能开,全没有以前的问题,也不知道是赶巧还是怎么地,这几天总有玩游戏的喊卡,我不得不怀疑是不是ROS软路由的事,作以下几个问题请教:1 WINDOWS98系统Internet共享和ROS软路由哪个作网吧服务器好,具体好在哪里?2 WINDOWS98系统Internet共享,为什么会出现那三个网站不好打开,(而ROS路由却没事),高手帮分析一下原因,是不是可以在哪里设置一下?3 在ROS设置里,我只是设置了最简单的设置,就是设了IP 网关等,至于什么防火墙,限速,或均衡什么的都没有设置,请问这样会不会造成网速卡,是不是一定要设置?在网上看资料上说,要分配网速,不然有的机器用迅雷P2P什么的,其它机器会卡,但以前98共享上网时也没有设置什么平均分配网速,那时即便使用迅雷,别的机器也没有说卡的,请问现在换成。ROS了,就必须得设了吗?如果有人喊卡,是不是这个原因造成?
提问者采纳
好在功能,ROS比WINDOWS共享上网功能强多了,但ROS是英文的使用比较麻烦想简单功能又强还要免费,你可以去下载海蜘蛛中文免费路由卡就一下限速就行了用的好记得加分
其他类似问题
ros软路由的相关知识
其他4条回答
建议用ROS吧,ROS功能强大,不但可以限速,还可以监控每台机的网络流量,到底是不是机器开了迅雷占用网速之类的问题一下子就可以查出来了。何况学好ROS对你自己的技术也是一个很大的提升。
ros还是不错的基础条件很简单
玩起来很有意思, 值得研究
为什么不用交换机带?
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁WineDesign | Wijngeschenken | 领英
时刻了解WineDesign | Wijngeschenken消息
寻找新机遇
查看与员工的人脉关系
免费加入领英,获取超过 300 万家企业的最新消息、动向和机遇。
WineDesign | Wijngeschenken
13 位关注者
您可能还对这些公司感兴趣
加入领英即表示您同意领英的、及 。
已经有帐户?

我要回帖

更多关于 eigenfunction 的文章

 

随机推荐