C 和 C++ 的矩阵库

C 和 C++ 的矩阵库

  2005-05-11 18:51:12  
 


评估和比较 Meschach、Cooperware 矩阵和 Blitz

Andrew L. Blais([email protected]
研究员和作家

本文将介绍一些目前可在 Linux 环境中使用的开放源代码 C/C++ 矩阵库。在这里具体讨论的库有三个:Meschach 库为 C 代码编写的项目提供例程,用于矩阵和向量的运算;Cooperware Matrix(CwMtx)库可用于 C++ 代码编写;Blitz 库为 C++ 提供可用整数、浮点数、复数和规范的用户定义的类型的 n 维数组类。Andrew Blais 是 Gnosis,Inc. 的研究员和作家,他在 developerWorks 已投稿多次,从事神经网络方面的工作。
本文假设读者对 C/C++ 有一定的了解并非常关注 C/C++ 本身没有矩阵功能。您可能在分析计量经济学的数据或模拟雨林。对于我来说,我正从事神经网络的研究而一两个矩阵可以大大简化神经网络的实现。虽然 C/C++ 包括可被看作矩阵(例如数组和标准库中的向量、列表和图)的容器,但是,真正是矩阵的容器将使手中的任务变得很容易。所以我们将介绍三个开放源代码库供您选择,它们不要求您从头开始构建矩阵,但的确让您使用矩阵库。如果您期望用从未见过的方法来使用它,那就太好了。

Meschach:用 C 的选择
对于用 C 编写代码的项目,Meschach(读作 me-shark)提供了例程,用于矩阵和向量的运算。它的优点是能在 Linux 和多数其它操作系统下编译,并且在版权保护下可公开获得,只要您作出例行的承认并报告错误。Meschach 可以解稠密或稀疏线性方程组、计算特征值和特征向量和解最小平方问题,另外还有其它功能。它为双精度数和复数提供了近 400 个函数。它提供的教程以说明性的小案例研究的形式介绍了这些函数。David Stewart 和 Zbigniew Leyk 通过一些主题的讨论来介绍 Meschach,这些主题包括超定方程组的广义的最小平方方程解答器(generalized least square equation solver for over-determined equations)和涉及稀疏矩阵的问题。他们的教程还包括三维矩阵和错误报告等稍稍高级的主题。

对象和类函数往往与代码关联,C 结构可能看起来有点神秘,所以 C 库往往不被作为可行的解决方案。但是作为对此的反击,这个库的组织很合理,所以不应不加思索地就舍弃它。在下载 Meschach 后过了一刻钟,我就可以制造、填充和显示矩阵了(在概念上等同于创建 Hello World! 程序)。您可以参考一本名为“Meschach: Matrix Computations in C”的便宜的印刷品手册(请参阅本文末尾的参考资料)。特别是测试程序“torture”,其中包括不少有益的线索。

矩阵可被容易地发送到文件或标准输出。Meschach 能计算快速傅立叶变换(Fast Fourier Transform)、提取列和行以及计算对称矩阵的特征值。您可以在矩阵中填充随机整数和复数。信不信由您,该库甚至还有矩阵相加的工具。Meschach 有一个返回在 [0,1) 之间的随机双精度数的函数,它是 Meschach 的一个特色,可用于简化明显的踏脚石程序的编写。虽然 Meschach 有一个用 1.0 填充矩阵的函数,但不幸的是,它没有用一个任意的双精度数填充矩阵的函数,也没有用随机双精度数填充矩阵的函数。不过,添加它们是容易的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值