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. 040_Field Set

    Field Set是一组字段.例如,您可以有一个Field Set,其中包含描述用户的名字,中间名,姓氏和业务标题的字段.将Field Set添加到Visualforce页面时,开发人员可以遍历字段并 ...

  2. CString常用方法简介

    CString常用方法简介 CString::Compare int Compare( LPCTSTR lpsz ) const; 返回值   字符串一样 返回0 小于lpsz  返回-1 大于lps ...

  3. Jupyter Notebook基本配置与使用

    Jupyter Notebook,原名IPython Notbook,是IPython的加强网页版,一个开源Web应用程序 1.创建虚拟环境 mkvirtualenv ai 2.进入虚拟环境 work ...

  4. golang 生成Sqlserver数据表实体

    最近开始学习golang,公司原来 很多项目都 Sqlserver数据库的,世面上很多文章,都是关于Mysql的,自己参考了一个博主的文章,整了一个生成Sqlserver实体的小工具分享一下,能给个星 ...

  5. vs2019 debug 出现: printf is ambiguous

    在vs中写c++代码时,莫名其妙出现:printf is ambiguous 的错误. 第一步,有设置std namespace 删除后再输入 using namespace std; 第二步.删除u ...

  6. Executor框架详解

    Executor框架详解 java的线程既是工作单元,也是执行机制.从jdk5开始,把工作单元与执行机制分离开来.工作单元包括Runnable和Callable,而执行机制由Executor框架提供. ...

  7. Tomcat和Maven安装与配置

    链接:https://pan.baidu.com/s/1aezz2pfCn0DCCPw8udQFXA 提取码:wd4f 一.网站发布1.1.为什么要用tomcat网页开发好了,该如何发布呢?我们需要一 ...

  8. 12.21linux学习第二十天

    今天老刘讲最后一章,第20章使用LNMP架构部署动态网站环境.定制安装17个安装包,编译安装要花很长时间,需要漫长的等待. LNMP动态网站部署架构是一套由Linux + Nginx + MySQL ...

  9. mmdetection使用现有的模型进行推理

    数据集准备: 下载链接: COCO:https://cocodataset.org/ VOC:http://host.robots.ox.ac.uk/pascal/VOC/ cityscapes:ht ...

  10. (c语言描述 函数递归汉诺塔)

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序 ...