将特征矩阵转换为 C++ 形式的三元组

2024-01-17

我认为 Eigen 使用压缩方法来存储稀疏矩阵。有什么方法可以从 std::vectors 中提取特征稀疏矩阵的三重格式向量?

Thanks.

更多信息(三元组格式的示例) 矩阵的三元组格式:

A=
3 0 4 0
0 0 1 0
0 2 0 5
4 0 0 0

i = 1 1 2 3 3 4  // row
j = 1 3 3 2 4 1 // column
S = 3 4 1 2 5 4  // values

问题的答案是:

// Is there some method such as:

std::vector<Eigen::Triplet<double>> T = SparseMat.to_triplets();

// in Eigen?

不是,好像没有这样的功能。

反而,

std::vector<Eigen::Triplet<double>> to_triplets(Eigen::SparseMatrix<double> & M){
    std::vector<Eigen::Triplet<double>> v;
    for(int i = 0; i < M.outerSize(); i++)
        for(typename Eigen::SparseMatrix<double>::InnerIterator it(M,i); it; ++it)
            v.emplace_back(it.row(),it.col(),it.value());
    return v;
}

auto t = to_triplets(SparseMat);

如果你想做得更快,可以在 IDE 中打开它,查找指向数据数组的指针,然后编写一个对运行时没有影响的复杂函数,因为矩阵是稀疏的,并且复制在以下方面是线性的:非零元素。

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

将特征矩阵转换为 C++ 形式的三元组 的相关文章

随机推荐

  • 禁用帆中的用户挂钩

    我正在 Heroku 上托管的一个项目中使用 sails 我有一个运行 sails Web 服务器的 Web 进程和一个使用与 Web 服务器使用的模型相同的模型的工作进程 为了使其成为可能 我有不同的方式使用相同的代码启动每个进程 app
  • Python 3.3 - 连接 Oracle 数据库

    python 3 3有连接Oracle数据库的模块吗 哪个最容易使用 像 mysql 模块之类的东西只能与 Oracle 一起使用 最好是 10g 版本 但 11g 也可以 有 cx Oracle Install gt You should
  • Java 内存模型:创建最终实例字段的循环引用图(所有字段均在同一线程内分配)是否安全?

    比我更了解 Java 内存模型的人可以确认我对以下代码正确同步的理解吗 class Foo private final Bar bar Foo this bar new Bar this class Bar private final Fo
  • Powershell函数递归获取元数据

    我正在修改一些 powershell 代码 我发现这些代码可以递归地从文件中获取元数据 但我在访问文件夹中的文件夹时遇到问题 我从 share 下直接列出的文件夹中获取元数据 而不是从那里的文件夹和文件中获取元数据 如何将此代码修改为文件夹
  • 为什么 notebook() 对 IJulia 不起作用?

    我在尝试使用时收到此问题notebook 在 Julia 命令行界面 REPL 中 julia gt using IJulia Info Precompiling IJulia 7073ff75 c697 5162 941a fcdaad2
  • 如何在没有太多引号的情况下序列化 JsonObject?

    我正在 com google gson JsonObject 上编写一个小型流畅的包装器 当我序列化 Json 时 我得到 key1 value1 key2 value2 key3 innerKey value3 如何去掉多余的引号 My
  • Microsoft Translator Text API 打破了 notranslate 跨度

    我正在使用 Microsoft Translator Text API 来翻译一些句子 我的句子包含一些我不需要翻译的文本部分 为了实现这一点 我使用 span class notranslate span 通过包装不可翻译的文本 在大多数
  • iOS 使用 AVAssetWriter 捕获视频时如何正确处理方向

    我正在制作一个利用 AVFoundation 录制视频的示例应用程序 重点是这样我可以更好地控制视频的录制方式 在我的示例项目中 我进行了视频捕获 但在正确处理方向方面遇到了困难 我在网络上进行了大量搜索 发现其他人建议我不应允许我的捕获视
  • long.Parse() C#

    在 C 中 如何将字符串 例如 100 100 转换为 long 我目前有一行代码是 long xi long Parse x System Globalization NumberStyles AllowThousands 但当 x 是
  • const 引用右值的类数据成员的生命周期是多少?

    一般来说 这个讨论仅取决于局部函数变量 void foo const int i use i till foo ends foo 3 但是 这条规则是否适用于class会员还 struct A const int a A a 3 versi
  • 实现 StickyGridHeaders Android 时标题中的按钮

    我正在尝试使用粘性网格标题 https github com TonicArtos StickyGridHeaders在我的 Android 应用程序中 它工作得很好 除非我尝试将点击监听器添加到 headerview 中的可点击 Imag
  • 使用 Eclipse 在 Android 虚拟机中启动 Android java 项目时出现问题

    我已经安装并设置了 Eclipse 和插件 ADT 以便与 Android SDK 一起使用 到目前为止 一切都很好 但是 当我尝试为我选择的任何 android 平台 例如 android 3 2 启动 VM 虚拟机 时 我只是将皮肤与键
  • Rapidjson C++ 释放对象内的数组

    我正在使用rapidjson C 库 https github com miloyip rapidjson 使用此库您可以创建 JSON 对象 目前我有一些记忆问题 情况 在我当前的设置中 我创建了一个新对象 并向其添加了值成员和数组成员
  • 将引导日期时间选择器与 Vuejs 2 结合使用

    我想将日期时间选择器与 vue 2 或 webpack 集成 我尝试搜索但找不到相关文章 有没有人将日期时间选择器与Vue2或webpack集成 有任何示例代码可供参考吗 任何帮助将不胜感激 Thanks 只需谷歌搜索 您肯定可以找到有关该
  • 如何在 Linux 2.6.35 上从用户模式清除和无效 ARM v7 处理器缓存

    我尝试清除指令行的 ARM v7 处理器缓存并使之无效 因为指令代码在执行中可能会发生变化 为了达到效果 我尝试了两种变体 他们来了 我用过海湾合作委员会 清除缓存 函数 但没有给出所需的结果 缓存中的指令代码没有改变 我寻找了 GCC 的
  • CountDownLatch 是否受到虚假唤醒的影响?

    诸如等待 通知和锁定 条件之类的并发管理机制似乎受到以下因素的影响虚假唤醒 https en wikipedia org wiki Spurious wakeup 开发人员通过重新检查情况是否确实发生变化来应对这些意外的唤醒 当谈到 Cou
  • 如何使用 Sql Profiler 捕获 SqlBulkCopy 中传递的数据?

    我一直在使用 Sql Profiler 来捕获 SQL 语句并重新运行有问题的语句 很有用 但是 有些代码使用 SqlBulkCopy API 我不知道如何捕获这些代码 我看到临时表的创建 但没有填充它们 似乎 SqlBulkCopy 绕过
  • Activity 的实例什么时候会消亡?

    这是一个示例代码 让我有点想念 package com leak import android app Activity import android app ProgressDialog import android os AsyncTa
  • 随机选择设置位的有效方法

    我当前的爱好项目为纸牌游戏提供蒙特卡罗模拟French牌组 52 张牌 从 2 到 A 为了尽可能快地进行模拟 我在某些地方将多张卡表示为位掩码 这是一些 简化的 代码 public struct Card public enum Card
  • 将特征矩阵转换为 C++ 形式的三元组

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