Eigen构造稀疏矩阵

2023-05-16

Eigen构造稀疏矩阵,这里我们对稀疏矩阵采用三元组的存储方式,即用(i,j,value(i,j))这样的组合把非零元的位置和值表示出来。废话不多说,我们直接上例子

#include "iostream"
#include "Eigen/SparseCore"


using namespace std;
using namespace Eigen;

int main()
//我们需要生成的矩阵
/****************
 0 1 0 0 0
 0 0 0 2 0
 1 0 0 0 0
 0 0 0 0 3
 0 0 0 0 0
 ***************/
{
    SparseMatrix<double> A(5,5);
    vector < Triplet <double> >triplets;
    // 初始化非零元位置,r表示行,c表示列,默认列优先。
    int r[4]={2,0,1,3};
    int c[4]={0,1,3,4};
    double value[]={1,1,2,3}; //给非零元赋值
    for (int i=0;i<4;i++)
        triplets.emplace_back(r[i],c[i],value[i]);
    //初始化矩阵
    A.setFromTriplets (triplets.begin(),triplets.end());

    cout <<"A="<<endl<<A<<endl;

}

输出结果

wanghai@de4f88556b1b:~/wanghai/build$ ./SMatrix 
A=
Nonzero entries:
(1,2) (1,0) (2,1) (3,3) 

Outer pointers:
0 1 2 2 3  $

0 1 0 0 0 
0 0 0 2 0 
1 0 0 0 0 
0 0 0 0 3 
0 0 0 0 0 

这样我们轻松的得到了一个稀疏矩阵。

此外我们对稀疏矩阵还有很多其他操作能得到关于矩阵的很多信息,例如

sm1.rows();         // 行数
sm1.cols();         // 列数
sm1.nonZeros();     // 非零值的数量   
sm1.outerSize();    // 列主要(相应的行主要)的列数(相应的行)
sm1.innerSize();    // 行数(列数)的行数(列数)
sm1.norm();         // 矩阵的欧几里德范数
sm1.squaredNorm();  // 矩阵的平方范数
sm1.blueNorm();
sm1.isVector();     // 检查 sm1 是稀疏向量还是稀疏矩阵
sm1.isCompressed(); // 检查 sm1 是否为压缩形式

参考链接

http://eigen.tuxfamily.org/dox/group__SparseQuickRefPage.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eigen构造稀疏矩阵 的相关文章

  • 在 Apple M1 上使用 clang 出现“致命错误:找不到‘omp.h’文件”

    Clang 找不到omp h每当我尝试使用 openMP 标志进行编译时 这就是我想做的 clang dynamiclib I opt homebrew Cellar eigen 3 3 9 include eigen3 Xpreproce
  • Eigen::Ref<> 作为成员变量

    我需要一个类有一个 Eigen Ref 变量作为静态成员 该变量将通过init静态方法 像这样的东西 class CostFunction public static Eigen Ref
  • 调整 Eigen::Ref 大小的解决方法

    我想使用 Eigen Ref 来使用 Eigen Matrix 参数来实现非模板函数 我的问题是 在这些函数中 我可能必须调整 Eigen Ref 引用的矩阵的大小 我知道 一般而言 不应调整 Eigen Ref 的大小 因为它可以映射到表
  • Eigen 库 - 矩阵的伪逆(Matlab - pinv)

    我正在尝试使用特征库找到矩阵的伪逆 他们有一个类确实实现了它 但是我不知道如何编写脚本语法 这是它在网站上显示的方式 https eigen tuxfamily org dox classEigen 1 1CompleteOrthogona
  • 在 Windows 中配置 cmake 项目时未找到 Eigen3_DIR

    我想编译一个开放项目 https github com ppwwyyxx OpenPano 它需要 Eigen3 我遵循了它的指南 但停留在这一步 将环境变量 Eigen3 DIR 设置为 YOUR EIGEN3 DIRECTORY eig
  • Eigen 将旋转和平移组合成一个矩阵

    我有一个旋转矩阵rot Eigen Matrix3d 和平移向量transl Eigen Vector3d 我希望它们一起出现在 4x4 变换矩阵中 我只是为了我的生活不知道如何在 Eigen 中做到这一点 我认为仿射可以以某种方式使用 但
  • 如何将 Eigen 库添加到 C++ 项目中

    可能是一个愚蠢 简单的问题 但我一直无法找到答案 我不知道如何使用 CodeBlocks c 添加库 我从以下位置下载了 zip 文件http eigen tuxfamily org index php title Main Page ht
  • 将 Eigen::VectorXd 类型转换为 std::vector

    他们有很多相反的链接 但在我的具体情况下 我无法找到从 Eigen Matrix 或 Eigen VectorXd 获取 std vector vector
  • 如何修补 Eigen 3.3.7 以解决 GCC 8.2.1 错误(arm-none-eabi 8-2018q4-major 工具链)?

    我试图用以下命令编译 Eigen 3 3 7Arm的裸机8 2018q4 major工具链 https launchpad net gcc arm embedded announcement 15181并看到完全相同的错误 请参阅x86 6
  • 将特征矩阵转换为 C++ 形式的三元组

    我认为 Eigen 使用压缩方法来存储稀疏矩阵 有什么方法可以从 std vectors 中提取特征稀疏矩阵的三重格式向量 Thanks 更多信息 三元组格式的示例 矩阵的三元组格式 A 3 0 4 0 0 0 1 0 0 2 0 5 4
  • 根据任意分布设置 Eigen::Matrix 的系数

    Eigen Matrix 有一个 setRandom 方法 它将矩阵的所有系数设置为随机值 但是 是否有一种内置方法可以将所有矩阵系数设置为随机值 同时指定要使用的分布 有没有办法实现类似以下内容 Eigen Matrix3f myMatr
  • Eigen::Ref<> 类的正确用法

    Eigen 引入了 Ref 类 以便在不需要编写模板函数时以 Eigen 对象作为参数编写函数 而无需使用不必要的临时变量 人们可以读到这一点here http eigen tuxfamily org dox TopicFunctionTa
  • 使用特征值测试奇点:识别共线列

    我正在尝试使用特征值方法检查我的矩阵是否是奇异的 即 如果特征值之一为零 则矩阵是奇异的 这是代码 z lt matrix c 3 2 1 4 9 6 3 12 5 5 9 4 nrow 4 ncol 3 eigen t z z value
  • 将特征矩阵转换为 C 数组

    The Eigen http eigen tuxfamily org 库可以将现有内存映射到特征矩阵 float array 3 Map
  • C++ 对齐的未来:按值传递?

    阅读 Eigen 库文档 我注意到有些对象不能按值传递 http eigen tuxfamily org dox TopicPassingByValue html C 11 中是否有任何开发或计划开发可以安全地按值传递此类对象 另外 为什么
  • 我可以使用特征稀疏矩阵来满足一般存储需求吗

    我需要一个模板化的稀疏矩阵实现 但只是为了减少内存占用 not进行任何数值求解 所以我尝试使用 Eigen 尽管我不需要数学部分 为什么 它恰好就在我的机器上 而且我已经用它来做其他事情了 但我肯定不是本征专家 Context 我有一个类型
  • 访问特征矩阵的行向量时复制或引用

    我正在使用的代码Eigen http eigen tuxfamily org index php title Main Page矩阵库 我注意到在整个代码中 有如下访问器 RowVector3f V size t vertex index
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • Eigen:将每一行除以最后一行

    使用 Eigen 时我不太清楚其语法rowwise运营 我有一个特征矩阵 我想将每一行除以最后一行 所以如果我们从一个矩阵开始 r 0 1 2 3 4 5 然后在这个转变之后 我想要 r 0 2 5 6 1 1 最好该操作发生在适当的位置
  • 特征矩阵库逐系数模运算

    在我正在开发的项目的一个函数中 我需要找到特征库矩阵的每个元素除以给定数字后的余数 这是与我想要做的等效的 Matlab mod X num 其中 X 是被除数矩阵 num 是除数 实现这一目标的最简单方法是什么 您可以使用 C 11 la

随机推荐

  • 读书随笔(1)——《计较是贫穷的开始》

    xff08 读书之后写感 xff0c 本该是读书之后自然的一个延续 xff0c 但我却很少这样了 xff0c 这不能说是一个极其坏的习惯 xff0c 虽不知道我究竟能不能改了 xff0c 但还是希望能尽可能的写写 xff0c 对自己想法有个
  • 2012年终随笔

    时至年终 xff0c 按我此前的惯例 xff0c 该写篇年终总结性的文章 xff0c 在之前末日说沸沸扬扬的时候 xff0c 我在想是否该早点写 xff0c 写个末日遗言什么的 xff0c 但还是没有写 xff0c 觉得如果真的末日来临 x
  • Tomcat多端口映射配置

    1 多端口映射配置 在server xml中 xff0c 找到 lt Connector gt 标签 xff0c 默认情况下会有一个 8080 端口的 lt Connector gt 标签 xff1a lt Connector port 6
  • 10个艰难的Java面试题与答案

    10个最难回答的Java面试题 这是我收集的10个较难回答的 Java 面试题 这些问题主要来自 Java 核心部分 不涉及 Java EE 相关问题 这些问题都是容易在各种 Java 面试中被问到的 1 为什么 wait xff0c no
  • Spring Security 5.x兼容多种密码加密方式

    1 spring security PasswordEncoder spring security 5不需要配置密码的加密方式 xff0c 而是用户密码加前缀的方式表明加密方式 xff0c 如 xff1a MD5 88e2d8cd1e92f
  • linux把进程或线程绑定到特定cpu核上

    绑定进程到cpu核上运行 查看cpu有几个核 使用cat proc cpuinfo 查看cpu信息 xff0c 如下两个信息 xff1a processor xff0c 指明第几个cpu处理器cpu cores xff0c 指明每个处理器的
  • Suse重启samba指令

    重启前先查看后台进程 linux jzp3 home w210412 ps aux grep smbd root 4400 0 0 1 2 308428 22372 Ss 18 23 0 00 usr sbin smbd D F root
  • uIP和LwIP背后的那个牛逼男人

    在公众号给大家介绍过Uip和LwIP xff0c 如果使用过这两种TCP IP协议栈 xff0c 那么你一定会熟悉一个人Adam Dunkels亚当 邓克尔 瑞典计算机科学院的教授 xff0c 这两种开源的协议栈都出自他手 xff0c 现在
  • 一张表看懂uIP和lwIP的区别

    我们给大家介绍过目前比较流行的开源TCP IP开源协议栈uIP和lwIP 这两种都是由瑞典计算机科学研究院开发的 xff0c 广泛应用于嵌入式系统中 因为全功能的TCP IP协议是很庞大的 xff0c 在资源紧张的嵌入式上是很难实现的 xf
  • 小猿助你freeRTOS驱动开发

    主要介绍在移植好的基于NXP之kinetis K64 43 freeRTOS平台上添加Modbus驱动 对freeRTOS不懂或者移植不懂的可以看看之前公众号的文章 准备工作 xff1a 1 xff0c 基于之前移植好的K64 43 fre
  • 告诉过你PID很重要,你不听

    曾经在公众号 xff0c 多次提到在控制系统中经常用到的PID控制 xff0c 也在培训中讲过PID的应用和在软件中的实现以及调试 xff0c 但是现实中还是有很多工程师对PID很陌生 xff0c 如果你是搞电力电子 xff0c 电力变换
  • Windows 使用 VNC 远程连接 Ubuntu 桌面版

    前言 工作需要使用 Windows 远程桌面版的 Ubuntu xff0c 原来使用的 TeamViewer 现在经常被检测为商业用途 xff0c 就很麻烦 因此 xff0c 现在转战使用 VNC 进行远程 使用步骤参考地址 xff1a 法
  • IP第十天笔记 - - - BGP

    BGP 边界网关协议 AS 自治系统 由单一机构或组织管理的一系列IP网络及其设备的集合 1 网络范围太大 xff0c 协议跑不过来 xff0c 需要进行划分 xff1b 2 自治管理 为了方便区分和标定不同的AS xff0c 我们给每一个
  • Makefile(1)

    1 前言 有幸拜读了http blog csdn net haoel article details 2888 http www cnblogs com Anker p 3242207 html http www groad net bbs
  • 解决vnc客户端不能拷贝粘贴

    在vnc窗口里输入如下命令 vncconfig nowin amp 在一个node的vnc里发现vncconfig nowin amp 不工作 xff0c 但是vncconfig amp 工作 https blog csdn net qq
  • shell的等号两边不能有空格

    shell的等号在赋值的时候两边不能有空格 xff0c 在比较的时候两边必须有空格
  • uCOS上下文切换,PendSV中断函数

    摘自 xff1a http www stmcu org module forum thread 384142 1 1 html 介绍一 xff1a 移植详解1和2中主要讲了移植需要用到的基础知识 xff0c 本文则对具体的移植过程进行介绍
  • Eigen稀疏线性求解

    在 Eigen 中 xff0c 当系数矩阵稀疏时 xff0c 有多种方法可用于求解线性系统 由于此类矩阵的特殊表示 xff0c 应特别注意以获得良好的性能 有关 Eigen 中稀疏矩阵的详细介绍 xff0c 请参阅稀疏矩阵操作 此页面列出了
  • Eigen关于稀疏矩阵

    处理和解决稀疏问题涉及各种模块 xff0c 总结如下 xff1a 模块 头文件 内容 SparseCore include lt Eigen SparseCore gt SparseMatrix 和 SparseVector 类 矩阵组装
  • Eigen构造稀疏矩阵

    Eigen构造稀疏矩阵 xff0c 这里我们对稀疏矩阵采用三元组的存储方式 xff0c 即用 i j value i j 这样的组合把非零元的位置和值表示出来 废话不多说 xff0c 我们直接上例子 include 34 iostream