矩阵中的内积两行C++与特征
inner product two rows in matrix C++ with Eigen
我想做一个内部产品,如下所示。 矩阵Xd a= [1,2,3,4] 矩阵Xd 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
和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;
神弩箭演示:https://godbolt.org/z/BDprOz
可以使用.asDiagonal()
成员函数来实现这一点:
c = a.asDiagonal() * b;
在这种情况下,c
是由对角矩阵的矩阵-向量积产生的向量,该矩阵包含向量a
的元素与向量b
。术语"向量"可互换用于描述一维矩阵。
https://godbolt.org/z/9DsLj8
这里假设b
是列向量MatrixXd b(4,1)
。如果它是一个行向量MatrixXd b(1,4)
则可以改用a.asDiagonal() * b.transpose()
。
我预计此选项与@chtz建议的解决方案在性能方面不会有任何显着差异。
相关文章:
- C++ 从文本文件中读取每两行,并且在矢量中是安全的
- 这两行代码有什么区别
- 矩阵中的内积两行C++与特征
- 使用 c++ 中的 getline 函数连续读取两行
- 一条线和两行声明之间的差异
- 为什么c中的一些函数名称用两行写
- 代码行在两行后不起作用
- 使用 Qt 获取 csv 文件中两行之间所有行
- OpenCV中图像的以下两行有什么区别
- Fstream 在两行后不会从文本文件中读取
- C++:如何在两行中为一个字符串和一个整数分配相同的输入
- SDL:程序运行正常;仅绘制两行像素
- c++如何将文本文件中的一行拆分为两行,然后将每行存储到两个不同的数组中
- 以下两行代码的另一个等效C++
- 在两行上打印类似"FirstnSecond"的字符串
- 这两行有什么区别?在不同位置使用整数
- C++更有效的方法将这两行代码写成一行短行
- 一次从.txt文件中读取两行 - C++ getline/流
- 运行程序时,它让我在名称后输入两行?请帮忙
- 如何在C++中从txt文件输出.该文件有一两行