Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 翻译Matlab';s bsxfun到本征值_C++_Matlab_Eigen_Eigen3 - Fatal编程技术网

C++ 翻译Matlab';s bsxfun到本征值

C++ 翻译Matlab';s bsxfun到本征值,c++,matlab,eigen,eigen3,C++,Matlab,Eigen,Eigen3,假设我们有一个维数为MxN的矩阵和一个维数为Mx1的向量。在Matlab中,要将“a”与“a”的所有列相乘,我们可以 bsxfun(@times, a, A) 在Eigen中是否有一种等效的方法,而不必在矩阵的列上循环 我正在努力 M = bsxfun(@times, a, A) + bsxfun(@times, a2, A2) 并希望Eigen的惰性评估将使其更有效 谢谢 您可以执行以下操作: M = A.array().colwise()*a.array(); 需要使用.array()

假设我们有一个维数为MxN的矩阵和一个维数为Mx1的向量。在Matlab中,要将“a”与“a”的所有列相乘,我们可以

bsxfun(@times, a, A)
在Eigen中是否有一种等效的方法,而不必在矩阵的列上循环

我正在努力

M = bsxfun(@times, a, A) + bsxfun(@times, a2, A2)
并希望Eigen的惰性评估将使其更有效

谢谢

您可以执行以下操作:

M = A.array().colwise()*a.array();
需要使用
.array()
将运算符*的语义重新定义为系数乘积(如果A和A是
数组
对象,则不需要)

在这种特殊情况下,最好将其编写为缩放操作:

M = a.asDiagonal() * A;

在这两种情况下,由于懒散的评估,您不会得到任何临时的结果。

关于C=bsxfun(@rdivide,pts,pts(3,:)?我的相关问题:彼得已经回答了这个问题。