Eigen中的SparseMatrix(稀疏矩阵)元素的快速插入

创建一个3x3的Eigen::SparseMatrix,通过std::vector存储Triplet对象,遍历矩阵设置所有元素为0.1,然后对(1,1)位置增加0.1,最后使用setFromTriplets方法更新矩阵值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eigen中的SparseMatrix(稀疏矩阵)元素的快速插入 - 辰宸的备忘录 (licc.tech)

Eigen::SparseMatrix<float> m(3, 3);
std::vector<Eigen::Triplet<float> > triple;
for (int i = 0; i < 3; i ) {
    for (int j = 0; j < 3; j ) {
        triple.push_back(Eigen::Triplet<float>(i, j, 0.1));
    }
}
triple.push_back(Eigen::Triplet<float>(1, 1, 0.1));    //相同下标重复插入,则表示相加
m.setFromTriplets(triple.begin(), triple.end());

这段代码的作用是创建一个 3x3 的稀疏矩阵 m,并将其所有元素的值设置为 0.1。具体实现如下:

  1. 定义了一个名为 m 的稀疏矩阵,大小为 3x3,元素类型为 float。

  1. 定义了一个名为 triple 的 std::vector,用于存储矩阵 m 的非零元素。

  1. 使用两个 for 循环遍历矩阵 m 的所有元素,将其行、列索引和值封装成 Triplet 类型的对象,并加入到 triple 中。

  1. 在循环外部,再加入一个 Triplet 对象,其行列索引为 (1, 1),值为 0.1。由于该位置在上面的循环中已经被赋值为 0.1,因此这里实际上是将该位置的值加上了 0.1。

  1. 调用 m 的 setFromTriplets 方法,将 triple 中的元素设置为 m 的非零元素。最终,矩阵 m 的值为:0.1 0.1 0.1

0.1 0.2 0.1

0.1 0.1 0.1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值