感谢BLAS(没有机会选择另一个库,它是我的项目中唯一可用的库),我想用C语言实现一些快速操作。
我执行以下操作:
求平方矩阵的逆,
使矩阵乘积a*B,其中a是计算出的逆矩阵,B是向量,
两个(很长)向量求和。
我听说布拉斯可以做这种手术,而且速度很快。但我搜索了一下,没有发现任何东西(我是说,在C代码行中)能让我理解并应用它。
最佳答案
BLAS库最初是用Fortran编写的与C的接口称为CBLAS,所有函数的前缀都是cblas_
。
不幸的是,使用BLAS,您只能直接解决最后两点:sgemv
(单精度)或dgemv
(双精度)执行矩阵向量乘法saxpy
(单精度)或daxpy
(双精度)执行一般矢量相加
BLAS不处理更复杂的逆矩阵运算为此,LAPACK库建立在BLAS的基础上,提供线性代数运算LAPACK中的一般矩阵求逆是用sgetri
(单精度)或dgetri
(双精度)完成的,但也有其他的求逆例程处理特殊情况,如对称矩阵如果逆矩阵只是为了以后乘以向量,那本质上就是解线性方程组,因此有sgesv
(单精度)和dgesv
(双精度)。
只有在本质上(重新)实现一个LAPACK例程时,才能使用BLAS操作反转矩阵。
请参阅许多BLAS/LAPACK实现中的一个,以了解更多详细信息和示例,例如Intel MKL或ATLAS。
关于c - BLAS:C中的矩阵乘积?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10573257/