Eigen 中的 conservativeResize 和 resize 操作
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 操作的更多相关文章
- Eigen中的noalias(): 解决矩阵运算的混淆问题
作者:@houkai本文为作者原创,转载请注明出处:http://www.cnblogs.com/houkai/p/6349990.html 目录 混淆例子解决混淆问题混淆和component级的操作 ...
- Eigen中的矩阵及向量运算
Eigen中的矩阵及向量运算 ,[+,+=,-,-=] ,[\*,\*=] ,[.transpose()] ,[.dot(),.cross(),.adjoint()] ,针对矩阵元素进行的操作[.su ...
- C语言中关于对目录的操作
原文地址:C语言中关于对目录的操作 目录的操作不论是在嵌入式产品还是应用软件编程都是必不可少的,不同的开发语言可能略有不同,笔者主要是讨论在Linux平台下对目录的一系列操作: 1.获取当前目录操作: ...
- Node.js 中MongoDB的基本接口操作
Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...
- Linux 中 Vi 编辑器的简单操作
Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...
- JS中基本window.document对象操作以及常用事件!
一.找到元素 1.document.getELementById("id"):根据id找,最多找一个. var a=document.getELementById("id ...
- SQL Server中的Image数据类型的操作
原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...
- 在应用程序中实现对NandFlash的操作
以TC58NVG2S3ETA00 为例: 下面是它的一些物理参数: 图一 图二 图三 图四 图五 图6-0 图6-1 说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的 ...
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...
- 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET
今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...
随机推荐
- MySQL经典45题
一.数据库字段说明 1.学生表 Student(SId,Sname,Sage,Ssex)SId :学生编号Sname:学生姓名Sage :出生年月Ssex:学生性别 2.课程表 Course(CId, ...
- FFmpeg input与output 函数流程
重要结构体 AVFormatContext AVCodecContextAVCodecAVPacketAVFrame 0.公共部分 av_register_all(); avfilter_regist ...
- C# 屏蔽词过滤
参考:https://www.cnblogs.com/kubidemanong/p/10834993.html public class TreeNode { public char Char; pu ...
- 「SOL」NOI2016 Day1 解题报告
第一次打 NOI,还是先把以前的 NOI 题刷一遍吧? # 目录 目录 # 目录 # A. 优秀的拆分 excellent # B. 网格 grid # C. 循环之美 cyclic # 小结 # 源 ...
- java中的数组遍历(简便小方法)
int[] a = {1,2,3,4}; for(int k:a){ System.out.println(k); //注意冒号后面直接写数组名即可. //注意,k的值就是数组a中某一项的值,即语句& ...
- Cubemx 生成工程代码失败的原因
折腾了好久(躺)翻了很多解答试了试终于捣鼓正常了,就在这里汇总一下看到过的问题 1.文件名.工程名或者工程文件路径/库路径上有中文名 2.Cubemx的版本过高 3.java环境的版本不适配 4.可能 ...
- SQL Server 解析Json(单层/多层)
一,单层Json数据取出 1.取出取出@JsonData字符串中的 __type,DocNo,OrderPriceTC,Organization_Code 字段 DECLARE @JsonData ...
- 攻防(一)tomcat CVE-2020-1938 ftp 21端口
TOMCAT kali自带POE msf6 > use auxiliary/admin/http/tomcat_ghostcat set RHOST 10.98.xx.xx msf6 auxil ...
- 十大经典排序之归并排序(C++实现)
归并排序 思路:(分而治之的思想) 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列: 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置: 3.比较两个指针所指向的元 ...
- springMVC的定时器
大家好,本人从事软件行业已有8年,大部分时间从事软件开发编写工作.好了废话少说了哈哈哈,直接干货. 在Java开发过程中有很多业务需求里面需要我们实时处理一些动态的业务比如库存的数据动态更新,实时数据 ...