Does Eigen http://eigen.tuxfamily.org/index.php?title=Main_Page有存储密集、固定大小、对称矩阵的有效类型吗? (嘿,它们无处不在!)
IE。对于 N=9,它应该只存储 (1+9)*9/2==45 个元素,并且它有适当的操作。例如,应该有效地添加两个对称矩阵,这会返回相似的对称矩阵。
如果没有这样的事情,哪些动作(看起来像this http://eigen.tuxfamily.org/dox-devel/TopicCustomizingEigen.html)我应该将这种类型引入 Eigen?它有“视图”的概念吗?我可以为我自己的类型编写类似“矩阵视图”的东西,这将使它适合本征吗?
附:也许我可以将普通数组视为 1xN 矩阵map http://eigen.tuxfamily.org/dox/classEigen_1_1Map.html,并对其进行操作。但这不是最干净的解决方案。
包装存储 http://www.netlib.org/lapack/lug/node123.html对称矩阵的一个big矢量化代码的敌人,即速度的敌人。
标准做法是将相关的 N*(N+1)/2 系数存储在全密集 NxN 矩阵的上三角或下三角部分中,并保留剩余的 (N-1)*N/2 不被引用。然后,通过考虑这种特殊的存储来定义对称矩阵上的所有操作。在本征中你有这样的概念三角形和自伴视图 http://eigen.tuxfamily.org/dox/group__QuickRefPage.html#title12为了获得这个。
来自eigen http://eigen.tuxfamily.org/dox/group__QuickRefPage.html#title12参考:(对于实矩阵自伴随==对称)。
就像三角矩阵一样,您可以引用任何三角形部分
方阵将其视为自伴随矩阵并执行
特殊和优化的操作。再次相反的三角形部分
永远不会被引用,可用于存储其他信息。
除非内存是个大问题,否则我建议将矩阵的未引用部分留空。 (更具可读性的代码,没有性能问题。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)