C++ 翻译Matlab';s bsxfun到本征值
假设我们有一个维数为MxN的矩阵和一个维数为Mx1的向量。在Matlab中,要将“a”与“a”的所有列相乘,我们可以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()
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,:)?我的相关问题:彼得已经回答了这个问题。