Eigen 中的 conservativeResize 和 resize 操作

  • 对于能够改变大小的动态矩阵,一般会有 resize() 操作。
  • resize() 如果不改变原矩阵的大小,则原矩阵大小和元素值都不会有改变,但是如果改变了原来矩阵的大小,则会调用矩阵的析构函数,导致矩阵的元素全部为0。
  • 如果想保存矩阵中的元素值,则可以调用 conservativeResize()函数即可。
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Dense>
#include <iostream> int main1(int argc, char const *argv[])
{
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix;
matrix.resize(2, 3);
matrix << 1, 2, 3, 4, 5, 6;
std::cout << matrix << std::endl;
std::cout << "after resize: " << std::endl;
matrix.resize(3,7); // resize 之后会调用析构函数,原先的值会变为0
std::cout << matrix << std::endl;
/*
输出结果为:
1 2 3
4 5 6
after resize:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
*/
return 0;
} int main(int argc, char const *argv[])
{
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix;
matrix.resize(2, 3);
matrix << 1, 2, 3, 4, 5, 6;
std::cout << matrix << std::endl;
std::cout << "after resize: " << std::endl;
// matrix.resize(3,7); // resize 之后会调用析构函数,原先的值会变为0
matrix.conservativeResize(3,7);
std::cout << matrix << std::endl;
matrix.resize(3,7);
std::cout << "不改变大小的 resize() " << std::endl;
std::cout << matrix << std::endl;
/*
输出结果为:
1 2 3
4 5 6
after resize:
1 2 3 0 0 0 0
4 5 6 0 0 0 0
0 0 0 0 0 0 0
不改变大小的 resize()
1 2 3 0 0 0 0
4 5 6 0 0 0 0
0 0 0 0 0 0 0 如果matrix的实际大小不改变,resize函数不做任何操作。
resize操作会执行析构函数:元素的值会被改变,如果不想改变执行
conservativeResize()。
*/
return 0;
}

Eigen 中的 conservativeResize 和 resize 操作的更多相关文章

  1. Eigen中的noalias(): 解决矩阵运算的混淆问题

    作者:@houkai本文为作者原创,转载请注明出处:http://www.cnblogs.com/houkai/p/6349990.html 目录 混淆例子解决混淆问题混淆和component级的操作 ...

  2. Eigen中的矩阵及向量运算

    Eigen中的矩阵及向量运算 ,[+,+=,-,-=] ,[\*,\*=] ,[.transpose()] ,[.dot(),.cross(),.adjoint()] ,针对矩阵元素进行的操作[.su ...

  3. C语言中关于对目录的操作

    原文地址:C语言中关于对目录的操作 目录的操作不论是在嵌入式产品还是应用软件编程都是必不可少的,不同的开发语言可能略有不同,笔者主要是讨论在Linux平台下对目录的一系列操作: 1.获取当前目录操作: ...

  4. Node.js 中MongoDB的基本接口操作

    Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...

  5. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  6. JS中基本window.document对象操作以及常用事件!

    一.找到元素 1.document.getELementById("id"):根据id找,最多找一个. var a=document.getELementById("id ...

  7. SQL Server中的Image数据类型的操作

    原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...

  8. 在应用程序中实现对NandFlash的操作

    以TC58NVG2S3ETA00 为例: 下面是它的一些物理参数: 图一 图二 图三 图四 图五 图6-0 图6-1 说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的 ...

  9. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  10. 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET

    今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...

随机推荐

  1. pytorch学习笔记(3)--dataset使用

    下载数据集 import torchvision from torch.utils.tensorboard import SummaryWriter dataset_transform = torch ...

  2. 微信字体大小调整导致的H5页面错乱问题处理

    当用户调整微信字体大小时会导致H5页面错乱,解决方案如下: ios:在css中加入-webkit-text-size-adjust: 100% !important;   body {   -webk ...

  3. git使用采坑-The project you were looking for could not be found 解决方式

    清除本地git账户,重新输入用户名密码(最优) git config --system --unset credential.helper之后再进行git操作时,弹出用户名密码窗口,输入即可 详情如下 ...

  4. [2001年NOIP普及组] 求先序排列

    给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入 第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列. 输 ...

  5. 链式前向星+dijkstra

    https://leetcode-cn.com/problems/network-delay-time/submissions/ // n <= 100 class Solution { int ...

  6. grpc start with python

    pip install grpcio grpcio-tools syntax = "proto3"; service FutureData { rpc GetTick(ReqTic ...

  7. Java面向对象编程:多态(自我理解)

    多态 (1)概念:同一个行为具有多个不同表现形式或形态的能力:就是同一个接口,使用不同的实例而执行不同的操作. (2)优点:消除类型之间的耦合关系:可替换性:可扩充性:接口性:灵活性:简化性: (3) ...

  8. Java 获取【.jar】文件里的资源文件

    获取jar文件里的图片等文件时,会发现使用相对路径不行了. 因为打包后的jar文件,在获取路径时稍有不同. 下面是获取jar文件中图片的例子: 1 Resource[] resources = new ...

  9. 使用@Param注解时注意org.springframework.data.repository.query.Param与org.apache.ibatis.annotations.Param的区别

    注解@Param有以下两种: 1.Spring org.springframework.data.repository.query.Param 2.mybatis org.apache.ibatis. ...

  10. 英国延长 UKCA 标记截止日期

    政府于 2022 年 11 月 14 日宣布,企业将有 2 年的时间来应用新的 UKCA 产品标记.在 2024 年 12 月 31 日之前,企业可以选择使用 UKCA 或 CE 标志,之后企业只能使 ...