犰狳错误:没有匹配函数调用‘inv(arma::SpMat<double>&)’
Posted
技术标签:
【中文标题】犰狳错误:没有匹配函数调用‘inv(arma::SpMat<double>&)’【英文标题】:Armadillo error: no matching function for call to ‘inv(arma::SpMat<double>&)’ 【发布时间】:2013-09-13 12:47:11 【问题描述】:这是上一个问题的延续 - 主要围绕 Armadillo C++ 库中对 SpMat(或 sp_mat)的支持。
尝试反转稀疏矩阵时,出现编译错误
error: no matching function for call to ‘inv(arma::SpMat<double>&)’
我宁愿不为 sp_mat 编写自己的矩阵求逆,除非我真的必须这样做,而且我不能使用 inv(arma::Mat&) 原型,因为我将要操作的稀疏矩阵将占用数百个如果将其转换为非稀疏矩阵,则为千兆字节的 RAM。
还有呢
error: no matching function for call to ‘join_cols(arma::sp_mat, arma::sp_mat)’
sp_mat 不支持连接列的类型吗?
任何帮助将不胜感激!
编辑:关于稀疏矩阵求逆错误的重点问题。正在使用的犰狳版本是 3.910.1
【问题讨论】:
见http://arma.sourceforge.net/faq.html#features 谢谢,但没有帮助。我把那个文件读了好几遍。 SpMat 支持矩阵乘法和其他算术运算,但是......没有连接?没有反转? 【参考方案1】:在这种情况下,与上一个关于vec
和mat
的问题相比,至少从犰狳标题来看,似乎sp_mat
和mat
具有不相关的基本类型,因此您无法推送sp_mat
类型作为inv
和join_cols
的参数,我猜是对底层数据结构做的。另外,由于这里没有提到您需要的两个功能http://arma.sourceforge.net/docs.html#SpMat 我猜不存在支持。由于我至少部分理解了将这种 bix 矩阵保留为稀疏矩阵的必要性,因此使用 http://math.nist.gov/sparselib++/ 和 http://math.nist.gov/mv++/ 之类的替代方案可能有意义吗?
【讨论】:
以上是关于犰狳错误:没有匹配函数调用‘inv(arma::SpMat<double>&)’的主要内容,如果未能解决你的问题,请参考以下文章