Eigen中norm、normalize、normalized的区别

本文详细介绍了Eigen库中向量和矩阵的norm、normalize及normalized方法的区别。norm()函数计算向量的二范数或矩阵的弗罗贝尼乌斯范数;normalize()将向量或矩阵元素按范数归一化,不返回值;normalized()则返回一个新的归一化后的向量或矩阵副本,不改变原对象。

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

Eigen中norm、normalize、normalized的区别

norm()

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

\|\mathbf{x}\|_{2}=\sqrt{\sum_{i=1}^{N} x_{i}^{2}}

例如:

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

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

\|\mathrm{A}\|_{F} \equiv \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n}\left|a_{i j}\right|^{2}}

例如:

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,并不改变原有的矩阵

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值