Eigen官网教程(5) 规约、范数等

1 Reductions

2 范数计算

向量的平方范数由squaredNorm()获得,等价于向量对自身做点积,也等同于所有元素平方和。Eigen也提供了norm()范数,返回的是squaredNorm()的根。这些操作也适用于矩阵。如果想使用其他元素级的范数,使用lpNorm<p>()方法,当求无穷范数时,模板参数p可以取特殊值Infinity,得到的是所有元素的最大绝对值。

矩阵的1范数和无穷范数也可以用下面的方法计算:

3 布尔规约

如下的操作得到的是布尔值

  1. all()返回真,如果矩阵或数组的所有元素为真
  2. any()返回真,如果矩阵或数组至少有一个元素为真
  3. count()返回元素为真的个数

4 迭代

当需要获得元素在矩阵或数组中的位置时使用迭代。Index  索引

maxCoeff(&x,&y) and minCoeff(&x,&y),

5 部分规约

部分规约指的是对矩阵或数组按行或列进行的操作,对每一列或者行进行规约操作时得到的是一个列或者行向量。如下例子得到矩阵每一列的最大值并存入一个行向量中

上:按列         下:按行

6 部分规约和其他操作的结合

使用部分规约操作得到的结果去做其他的操作也是可以的,如下例子用于得到矩阵中元素和最大的一列

7 结合广播和其他操作

广播也可以和其他操作结合,比如矩阵或数组的运算、规约和部分规约操作。下面介绍一个更加复杂的例子,演示了在矩阵中找到和给定向量最接近的一列,使用到了欧氏距离。

这句话做的工作是:

1)m.colwise()-v是一个广播操作,矩阵m的每一列减去v,得到一个新的矩阵

2)(m.colwise() - v).colwise().squareNorm()是部分规约操作,按列计算矩阵的平方范数,得到一个行向量

3)最终minCoeff(&index)根据欧氏距离获得矩阵中最接近v的一列的索引。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值