c++ - 矩阵 C++ 中的两行与 Eigen 的内积
问题描述
我想做一个如下的内积。MatrixXd a= [1,2,3,4] MatrixXd b= [1,2,3,4]
a*b = [1,4,9,16] <=> c[i] = a[i]*b[i]。
如何用 Eigen MatrixXd 做到这一点?
谢谢。
解决方案
你描述的是一个元素产品,(“内积”通常是指点积)。你可以写:
a.cwiseProduct(b);
// or
a.array() * b.array();
但是,如果您主要使用逐元素操作,则应将a
and声明b
为Array
:
Eigen::ArrayXd a{{1,2,3,4}}, b{{1,2,3,4}}; // {}-initialization requires C++11, and the development branch of Eigen
Eigen::ArrayXd c = a*b;
Godbolt 演示:https ://godbolt.org/z/BDprOz
推荐阅读
- django - 是否有用于将 RawQuerySet 转换为数据框的 Django 函数
- git - 在 Git 中,文件如何在 2 次提交之间静默丢失?
- visual-studio-mac - 在 Mac 上创建 ASP.NET 项目
- reactjs - 构建失败并出现错误 MSB4226:导入的项目 | 反应原生窗口
- python-3.x - 即使我正在比较整数,也无法对数据框中的列进行排序
- selenium-webdriver - 有没有办法检查 Selenium Web 驱动程序中的元素序列
- matlab - 如何解决“MathWorks.MATLAB.NET.Arrays.MWArray”引发异常?
- postgresql - 带有时区的 PostgreSQL 时间戳不使用索引
- linux - 监控关键字的日志文件,然后发送电子邮件通知
- docker - 如何在 Ubuntu 上将 IBM Rational Rhapsody 安装为 dockerfile