加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用特征计算Cholesky分解

发布时间:2020-12-16 03:01:05 所属栏目:百科 来源:网络整理
导读:我试图计算C中矩阵的Cholesky因子(对于给定的矩阵P find L,使得LL ^ T = P).我的目标不是求解线性系统P * x = b,因为这样的矩阵分解经常用于但实际获得矩阵L.(我正在计算“sigma点”,就像在无密码变换.) 图书馆Eigen据称计算Cholesky分解,但是我无法弄清楚如
我试图计算C中矩阵的Cholesky因子(对于给定的矩阵P find L,使得LL ^ T = P).我的目标不是求解线性系统P * x = b,因为这样的矩阵分解经常用于但实际获得矩阵L.(我正在计算“sigma点”,就像在无密码变换.)

图书馆Eigen据称计算Cholesky分解,但是我无法弄清楚如何让它给出矩阵L中的值.当我尝试以下代码行时

Eigen::MatrixXd P(3,3);
P << 6,4,7;
std::cout << P.llt().matrixL().col(0) << std::endl;

我得到编译器错误

error: ‘Eigen::internal::LLT_Traits<Eigen::Matrix<double,-0x00000000000000001,-0x00000000000000001>,1>::MatrixL’ has no member named ‘col’

documentation表示LLT.matrixL()返回类型为Traits :: MatrixL.这是什么,如何获得L的价值?

解决方法

您可以查看LLT.h头文件中的特征.它的 TriangularView像文档说的.三角形视图没有col成员,这就是为什么你得到错误.将三角形视图复制成如下所示的密集矩阵:
Eigen::MatrixXd P(3,7;
Eigen::MatrixXd L( P.llt().matrixL() );
std::cout << L.col(0) << std::endl;

会得到你想要的东西

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读