首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特征计算Cholesky分解

使用特征计算Cholesky分解
EN

Stack Overflow用户
提问于 2012-10-19 14:29:31
回答 1查看 7.6K关注 0票数 10

我正在尝试计算C++中矩阵的乔勒斯基因子(对于给定的矩阵P,找到L,使得LL^T=P)。我的目标不是解决线性系统的P*x=b,因为这样的矩阵分解经常用于,而是实际获得矩阵L。(我正在尝试计算"sigma点“,就像在unscented变换中所做的那样。)

Eigen库理应计算乔勒斯基分解,但我不知道如何让它给出矩阵L中的值。当我尝试以下代码行时

代码语言:javascript
复制
Eigen::MatrixXd P(3,3);
P << 6, 0, 0, 0, 4, 0, 0, 0, 7;
std::cout << P.llt().matrixL().col(0) << std::endl;

我收到编译器错误

代码语言:javascript
复制
error: ‘Eigen::internal::LLT_Traits<Eigen::Matrix<double, -0x00000000000000001, -0x00000000000000001>, 1>::MatrixL’ has no member named ‘col’

documentation说明LLT.matrixL()返回类型特征::MatrixL。这是什么,我如何得到L的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 16:59:57

您可以在LLT.h头文件中查找特征是什么。正如文档中所说的,它是一个TriangularView。三角视图没有col成员,这就是出现错误的原因。将三角形视图复制到密集矩阵中,如下所示:

代码语言:javascript
复制
Eigen::MatrixXd P(3,3);
P << 6, 0, 0, 0, 4, 0, 0, 0, 7;
Eigen::MatrixXd L( P.llt().matrixL() );
std::cout << L.col(0) << std::endl;

会得到你想要的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12968561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档