【问题标题】:Givens Rotation in Eigen with sparse matrix具有稀疏矩阵的特征中的吉文斯旋转
【发布时间】:2020-08-20 07:32:47
【问题描述】:

在我自己的 QR 分解的 C++ 实现中,通过 Givens 旋转将旋转矩阵设置为单位矩阵,我正在尝试使用 this 更通用的 Eigen 类来处理稀疏矩阵。事实上,常见的压缩行/列存储格式不支持算法调用的“setIdentity”方法。

我添加到代码中的 sn-p 无法编译,并且 Eigen 帮助在这方面对我来说非常模糊:

#include <Eigen/Sparse> 
SparseMatrix<double,ColMajor,int> G(m,m);  

G = G.setIdentity(m,m);

有什么建议吗?如何定义预处理器符号EIGEN_SPARSEMATRIX_PLUGIN

[顺便说一句:是否有任何预先打包好的实现? Eigen 和犰狳似乎都没有提供它]

【问题讨论】:

    标签: linear-algebra eigen


    【解决方案1】:

    这对我来说编译/运行良好。

    #include <iostream>
    #include <Eigen/Sparse>
    
    int main() {
        constexpr int m = 10;
        Eigen::SparseMatrix<double,Eigen::ColMajor,int> G(m,m);
        G.setIdentity();
        std::cout << G << std::endl;
        return 0;
    }
    

    我是通过

    g++ -Wall -std=c++11 foo.cpp -o foo
    

    您可能需要添加 -I /usr/local/include/Eigen/ 以确保它找到您的 Eigen 标头。

    【讨论】:

      猜你喜欢
      • 2015-08-24
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2022-11-23
      • 2023-03-29
      • 2015-05-08
      • 2011-03-11
      • 2017-10-21
      相关资源
      最近更新 更多