【Eigen 1】Eigen中的norm、normalize、normalized三者对比

2023-11-09

一、norm()

1. 对于Vector,norm返回的是向量的二范数

即:
∣ ∣ x ∣ ∣ 2 = ∑ i = 1 N x i 2 ||x||_2= \sqrt{\sum_{i=1}^{N} {x}^{2}_{i} } ∣∣x2=i=1Nxi2

Vector2d vec(3.0,4.0);
cout << vec.norm() << endl;	
/输出5

2. 对于Matrix,norm返回的是矩阵的弗罗贝尼乌斯范数(Frobenius Norm)

即:
∣ ∣ A ∣ ∣ F = ∑ i = 1 m ∑ j = 1 n ∣ x i j ∣ 2 ||A||_F= \sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n} |x_{ij}|^{2} } ∣∣AF=i=1mj=1nxij2

Matrix2d mat;
mat << 1,2
    3,4;
cout << mat.norm() << endl;    //输出sqrt(1*1+2*2+3*3+4*4),即sqrt(30) = 5.47723

二、normalize()

清楚了norm()的定义后,normalize()其实就是把自身的各元素除以它的范数,返回值为void。

例如:

vec.normalize();
cout << vec << endl;    //输出:      0.6
                       //            0.8
mat.normalize();        //mat各元素除以mat.norm()
cout << mat << endl;    

三、normalized()

而normalized()与normalize()类似,只不过normalize()是在自身上做修改,而normalized()返回的是一个新的Vector/Matrix,并不改变原有的矩阵。

四、测试案例

基本代码

 // testing vector
    Vector3d vec(3, 4, 5);
    cout << "norm_using is:\n" << vec.norm() << endl;
    vec.normalize();
    cout << "normalize_using is:\n" << vec << endl;
    cout << "normalized_using is:\n" << vec.normalized() << endl;

    // testing matrix
    Matrix3d mat;
    mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
    cout << "norm_using is:\n" << mat.norm() << endl;
    mat.normalize();
    cout << "normalize_using is:\n" << mat << endl;
    cout << "normalized_using is:\n" << mat.normalized() << endl;

测试结果

norm_using is:
7.07107
normalize_using is:
0.424264
0.565685
0.707107
normalized_using is:
0.424264
0.565685
0.707107
norm_using is:
16.8819
normalize_using is:
0.0592349   0.11847  0.177705
  0.23694  0.296174  0.355409
 0.414644  0.473879  0.533114
normalized_using is:
0.0592349   0.11847  0.177705
  0.23694  0.296174  0.355409
 0.414644  0.473879  0.533114
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Eigen 1】Eigen中的norm、normalize、normalized三者对比 的相关文章

随机推荐

  • 实用tcpdump命令 【转】

    文章来源 实用tcpdump命令 查看本机与mysql的操作命令 注意 i any表示监听所有网络接口 我们也根据自身情况选择网络接口 tcpdump i any w dst port 3306 strings 查看本机58895上与mys
  • 解决bug:Error creating bean with name 'webHandler' defined in class

    今天写代码 用到了 Spring Boot Admin 这是一个管理和监控的开源监控软件 但是今天一运行就报以下错误 Error creating bean with name webHandler defined in class wha
  • vue-message-simulate

    vue message simulate a light plugin of vue it simulates alert confrim model 依赖于sass 切 不支持ie9 一下的版本 使用如下 下载之后 在main js中 1
  • 如何在 Linux 中设置或更改系统主机名

    博学谷提供技术支持 主机名能帮助人们轻松的识别网络中的机器 单独运行hostname 不带任何参数 将返回 Linux 系统的当前主机名 如下所示 hostname TecMint 如果想更改 Linux 系统的主机名 只需运行 hostn
  • 测试用例设计-X云

    测试用例概述 测试用例设计方法 1 先对符合规则的设计一条用例 等价类方法 12个字符符合6 18个长度 不符合规则的 lt 6的字符 gt 18个字符 考虑边界值 我记得以前是考虑一个条件 另一个条件选有效等价类即可 这里考虑两个三件 那
  • java中String+String与StringBuilder的append()方法的效率问题

    因为上一次的A题过程中 发现String的 总是超时 后来用到了append 方法 就过了 发现两者的效率存在很大的区别 测试如下 public static void main String args TODO 自动生成的方法存根 Str
  • 无向图的深度优先遍历非递归_数据结构-图(图的基本实现C++)

    一 图的概念 图是一种比较复杂的非线性数据结构 图 Graph 是由顶点的有穷非空集合和顶点之间边的集合组成 通常表示为 G V E 其中 G表示一个图 V是图G中顶点的集合 E是图G中边的集合 图区分有向图和无向图 1 无向图 Undir
  • 编写程序,实现利用while循环和for循环属输出100以内偶数的功能。

    实现利用while循环属输出100以内偶数的功能 1 使用whlie编写 i 1 while i lt 100 i 1 if i 2 gt 0 continue print i end print 输出结果 2 4 6 8 10 12 14
  • 计算机科研立项应用类题目,《科研立项题目举例》.doc

    科研立项题目举例 计算机技术在其发展过程中形成两个重要分支 通用计算机领域 现在以Pc机为代表 着重发展海量高速数值运算技术 而其控制能力是有限的 嵌入式计算机领域 现在以单片机为代表 着重发展计算机的控制技术 而其计算机速度是有限的 在目
  • 小白学《HTML5网页开发实例详解》连载三(DOCTYPE和字符集)

    在2 1 2节中通过新老DOCTYPE的对比 读者可以清晰地看到HTML 5在精简旧有结构上做出的努力 DOCTYPE在出现之初主要用于XML中 用作描述XML允许使用的元素 属性和排列方式 起初HTML借鉴了XML中DOCTYPE的使用方
  • 使用OpenCV和Python生成视频条形码

    使用OpenCV和Python生成视频条形码 1 效果图 2 原理 2 1 步骤 2 2 项目结构 3 源码 参考 这篇博客将演示如何使用Python OpenCV生成视频条形码 生成视频条形码通常是出于设计美感 它不具有广泛的计算机视觉
  • 阿里云ECS FTP搭建

    阿里云ECS windows版 FTP服务设置教程 1 https www filezilla cn 去下载服务端和客户端并安装好 2 阿里云添加安全组 3 FileZilla服务端配置 4 FileZilla客户端使用端口10021连接服
  • AI巨浪下,数据技术如何驱动智能未来?

    引言 数据技术是大数据时代的核心驱动力 也是推动各行各业数字化转型和智能化升级的关键因素 随着云计算 人工智能 区块链等新兴技术的不断发展和融合 数据技术也呈现出多模态 混合处理 自动化管理等新的趋势和特点 8 月 19 日 周六 第八届
  • MongoDB:模糊查询、数量、结果插入新表、重复字段

    模糊查询 body中包含 db getCollection test find body regex 骗子 body或title中包含 db getCollection test find or body regex 骗子 title re
  • astype转换数据类型

    astype方法 通用函数 可以用于把dataframe中的任何列转换成其他类型 常见的数据类型有 int 整型 float 浮点型 object str 字符串 category 分类数据 import pandas as pd impo
  • Django基础知识整理之DRF框架

    文章目录 1 DRF框架简介 2 DRF特点 3 环境安装与配置 4 DRF牛刀小试 1 创建序列化器 2 编写视图 3 定义路由 4 运行测试 1 DRF框架简介 Django REST framework 框架是一个用于构建Web AP
  • Flutter的Toast之oktoast的使用

    1 在pubspec yaml中加入 oktoast 2 0 0 然后运行package get 2 包装 app widget 在main dart中 必须使用OKToast包起来 3 调用 如果只是Toast文字 可直接调用showTo
  • 阿里云的OSS云存储的使用

    阿里云官网 https www aliyun com 通过阿里云官网 登录进入用户的界面 在搜索框中输入OSS 然后进入阿里云的对象存储OSS的控制台 未开通的开通即可 创建 Bucket 点击 Bucket 列表 查看个人的Bucket
  • 区块链:建立加密代币

    启动testrpc 打开终端 启动testrpc testrpc EthereumJS TestRPC v6 0 3 ganache core 2 0 2 代币合约的基本概念 代币合约扮演的角色相当于银行的角色 使用者在代币合约中 用自己的
  • 【Eigen 1】Eigen中的norm、normalize、normalized三者对比

    一 norm 1 对于Vector norm返回的是向量的二范数 即 x 2