繁体   English   中英

矩阵对数算法

[英]Matrix logarithm algorithm

有什么方法可以计算 OpenCV 中的矩阵对数? 我知道它不能作为库 function 提供,但是,指向一个好的来源(论文、教科书等)的指针将不胜感激。

Nicholas J. Higham 的“矩阵函数:理论和计算”有一整章(第 11 章)专门讨论矩阵对数。 它包括算法的描述和数值实验的结果。

事实上,我正在编写 Eigen 库中的矩阵对数,这显然在一些 Willow Garage 库中使用; 不确定 OpenCV。 Higham 的书(见 aix 的回答)在我看来是最好的参考,我在他的书中实现了算法 11.11。 这是一个相当复杂的算法。

对角化(如 Alexandre 的评论)是一种易于编程的方法,非常适用于对称正定矩阵。 它也适用于许多通用矩阵。 但是,对于特征值接近的矩阵,它并不准确,对于不可对角化的矩阵,它也失败了。

如果您想要比对角化更强大但比 Higham 算法 11.11 更简单的方法,那么我建议您先进行 Schur 分解,然后进行逆缩放和平方。 This is Algorithm 11.10 in Higham's book, and described in the paper "Approximating the Logarithm of a Matrix to Specified Accuracy" ( http://dx.doi.org/10.1137/S0895479899364015 , preprint at http://eprints.ma.man .ac.uk/318/ )。

如果您使用OpenCV矩阵,您可以轻松地将map 转换Eigen3矩阵。 看到这个帖子:

OpenCV CV::Mat 和 Eigen::Matrix

然后, Eigen3库有一个矩阵对数 function 可以使用:

http://eigen.tuxfamily.org/dox/unsupported/group__MatrixFunctions__Module.html

它在不受支持的模块下,但这不是问题,这只是意味着:

这些模块是来自不同用户的贡献。 它们是“按原样”提供的,没有任何支持。

-- http://eigen.tuxfamily.org/dox/unsupported/

希望这是有帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM