首页 > 解决方案 > 具有稀疏矩阵的特征中的吉文斯旋转

问题描述

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

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

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

G = G.setIdentity(m,m);

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

[顺便说一句:那里有任何预先打包好的实施方案吗?Eigen 和犰狳似乎都没有提供它]

标签: linear-algebraeigen

解决方案


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

#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/以确保它找到您的特征标头。


推荐阅读