当前位置:  开发笔记 > 编程语言 > 正文

分段方形的矢量,C++ Eigen中两个向量的分段产品

如何解决《分段方形的矢量,C++Eigen中两个向量的分段产品》经验,为你挑选了1个好方法。

当然v,aEigen::VectorXdn维的向量,我想进行以下分段操作:

vby a,即向量的分段乘法(a[1]*v[1], ..., a[n]*v[n]),和

分段的正方形v,即矢量(v[1]*v[1], ..., v[n]*v[n]).

是否Eigen提供上述操作的方法,还是需要手动实现?当然非常简单,但我希望他们尽可能快地运行.



1> Avi Ginsburg..:

为了处理诸如你的问题之Array类的元素操作,Eigen提供了类.因此,要执行您询问的操作,您可以将逐点产品编写为:

c = a.array() * v.array(); // Long version
c = a.cwiseProduct(v);     // Short(er) version

对于你有的广场:

s = v.array().square();    // Probably what you want to use
s = v.array().abs2();      // Two operations: abs() then square()
s = v.cwiseAbs2();         // Same as above

使用a VectorXd作为数组不会产生副本,因此它非常有效.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有