C++中各大有名的科学计算库【转帖】 2011-01-13 15:14 在 C ++中,库的地位是非常高的。 C ++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中, C ++的库门类繁多,解决 的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并 不了解。所以文中所提的一些库都是比较著名的大型库。 C ++各大有名库的介绍——科学计算 1、Blitz++ 参考网站: http://www.oonumerics.org/blitz Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像 C ++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用 C ++所写出的数值程序, 比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用 C ++的template 技术,程序执行甚至可以比Fortran更快。 Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用 Blitz++所提供的函数来构建。 2、POOMA 参考网站: http://www.codesourcery.com/pooma/pooma POOMA是一个免费的高性能的 C ++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程 序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。 3、 MTL 参考网站: http://www.osl.iu.edu/research/ mtl Matrix Template Library ( MTL ) 是一个高性能的泛型组件库,提供了各种格式矩阵的大量线性代数方面的功能。在某些应用使用高性能编译器的情况下,比如Intel的编译器,从产生的汇编代 码可以看出其与手写几乎没有两样的效能。 4、CGAL 参考网站: www.cgal.org Computational Geometry Algorithms Library 的目的是把在计 算几何方面的大部分重要的解决方案和方法以 C ++库的形式提供给工业和学术界的用户。 Intel Math Kernel Library 1.基本线形代数运算(BLAS) 向量与向量、向量与矩阵、矩阵与矩阵的运算 2.稀疏线形代数运算 3.快速傅立叶变换(单精度/双精度)(fftw) 4.LAPACK(求解线形方程组、最小方差、特征值、Sylvester方程等) 5.向量数学库(VML) 6.向量统计学库(VSL) 7.高级离散傅立叶变换 IMSL 软件名称 IMSL C Numerical Library (不兼容vc6 编译器) 程序设计语言 C , Forton, C #, Java 资源网址 http://www.vni.com/ 功能概述 分为统计库和数学库两部分. 数学库包含应用数学和特殊函数.IMSL 程序库 – 已成为数值分析解决方案的工业标准。 IMSL 程序库提供最完整与最值得信赖的函数库。 IMSL 数值程序库提供目前世界上最广泛被使用的 IMSL 算法,有超过 370 验证过、最正确与 thread-safe 的数学与统计程序。 IMSL FORTRAN 程序库提供新一代以 FORTRAN 90 为程序库基础的程序,能展现出最佳化的演算法能力应用于多处理器与其它高效能运算系统。 LAPACK UserGuide: http://www.netlib.org/lapack/lug/lapack_lug.html lapack 软件名称 Linear Algebra Package 程序设计语言 Fortran 77 资源网址 http://www.netlib.org/lapack 功能概述 线性代数计算子程序包 clapack 软件名称 Linear Algebra Package for C 程序设计语言 c/c++ 资源网址 http://www.netlib.org/clapack/ 功能概述 c版的线性代数计算子程序包 如何在Visual Studio 2008中安装CLAPACK http://www.deuxmille.org/archives/1486 lapack++ 软件名称 Linear Algebra Package in c ++ 程序设计语言 c ++ 资源网址 http://math.nist.gov/lapack++/ 功能概述 c ++版的线性代数计算子程序包 BLAS 软件名称 Basic Linear Algebra Subroutines 程序设计语言 Fortran 77 主要开发者 Kagstrom B. ,Ling P. ,Van Loan C . 资源网址 http://www.netlib.org/blas 功能概述 Blas是执行向量和矩阵运算的子程序集合。 uBLAS BLAS in C ++ with expression templates. 表达式模版形式的 C ++ 中的BLAS , gsl 软件名称 GNU Scientific Library (linux) 程序设计语言 C , C ++ compable 资源网址 http://www.gnu.org/software/gsl/ 功能概述 范围广泛, 包括数值分析的常见内容 Blitz++ 软件名称 Blitz++ (不兼容vc6编译器) 资源网址 http://sourceforge.net/project/showfiles.php?group_id=63961 功能概述 The current versions provide dense arrays and vectors, random number generators, and small vectors and matrices.是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像 C ++ 一样方便,同时又比 Fortran 速度更快的数值计算环境。通常,用 C ++ 所写出的数值程序,比 Fortran 慢 20% 左右,因此Blitz++ 正是要改掉这个缺点。方法是利用 C ++ 的 template 技术,程序执行甚至可以比 Fortran 更快。 MTL 软件名称 Matrix Template Library (兼容vc6编 译器) 资源网址 http://www.osl.iu.edu/research/ mtl / 功能概述 The Matrix Template Library ( MTL ) is a high-performance generic component library that provides comprehensive linear algebra functionality for a wide variety of matrix formats. MTL 专注于线性代数相关的计算任务,如各种形式矩阵的生成(对角,共轭,稀疏,对 称等),相关的计算,变换,以及与一维向量的运算。 Armadillo Armadillo is a C++ linear algebra library (matrix maths) aiming towards a good balance between speed and ease of use. Integer, floating point and complex numbers are supported, as well as a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with LAPACK and ATLAS libraries. 资源网址 http://arma.sourceforge.net/ ATLAS The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK . 资源网址 http://math-atlas.sourceforge.net/ http://www.deuxmille.org/archives/1477
To demonstrate, using a window size of three with one entry immediately preceding and following each entry, a median filter will be applied to the following simple 1D signal: x = So, the median filtered output signal y will be: y = Median = 2 y = Median = Median = 6 y = Median = Median = 6 y = Median = Median = 3 i.e. y = .
① Library(*.enl/*.enlx)另:*.enw、*.ris可以直接导入导入endnote,不需要选择过滤器) 个人图书馆、文献库、书目文献数据库(Bibliography) 存储和管理文献数据的Endnote文件 ② Filter (*.enf) 过滤器将格式不统一的文献数据形成统一的endnote格式文献 ③ Style (*.ens) 文献输出格式、期刊编排格式,出现于word写作区、文献显示区和输出区 用于将统一的endnote格式文献输出为具有特定格式的文献 ④Connection file (*.enz) 链接文件用于在线检索时链接网络数据库的文件 ⑤ Term list (*.txt) 术语列表文献库内某一字段的所有词汇集合,在文献添加时自动产生,包括author、keyword、journal。其中journal也可以由endnote自带的term list文件直接导入 ⑥ Template (*.dot) 期刊投稿模板自动产生期刊所要求的投稿格式 ⑦ Group Custom group 一般组,需要自己添加 Smart group 智能组,通过检索策略定义,自动添加 Unfiled group 一般组外的文献,可以自由选择智能组文献是否在内,自动添加