c++ - 制作矩阵的更好方法 - 在 Eigen 中记录操作?

标签 c++ matrix eigen

我正在尝试使用 Eigen 对矩阵和对数/exp 进行一些计算,但我发现我的表达式有点笨拙(也可能更慢?)。有没有更好的方法来编写这样的计算?

MatrixXd m = MatrixXd::Random(3,3);
m = m * (m.array().log()).matrix();

也就是说,不必先转换为数组,然后再转换回矩阵?

最佳答案

如果你混合使用数组和矩阵运算,你无法真正避免它们,除了一些具有直接作用于矩阵的 cwise 函数的函数(例如,cwiseSqrt(), cwiseAbs()).

但是,.array().matrix() 在优化编译时(在任何合理的编译器上)都不会对运行时产生影响。 如果您认为它更具可读性,您可以使用 unaryExpr() .

关于c++ - 制作矩阵的更好方法 - 在 Eigen 中记录操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845200/

相关文章:

c++ - 不能 push_back 到引用 vector 中

c++ - 使用具有继承类值的基类函数

python - 在Python中将一维数组转换为基于类的二维矩阵

c++ - Eigen 中的叉积矩阵

c++ - qt C++ 图形用户界面 'on_lineEdit'

c++ - MSVC++ 2010 中 C++0x 的 <thread> header 的占位符

c++ - C++ 中的字符矩阵?

r - 您可以在 R 中使用 apply 实现 'sweep' 吗?

c++ - 在 Eigen 中,如何将多个映射矩阵组合为矩阵数组

c++ - 让应用程序拥有 CPU 和 GPU 计算后端的最佳方式是什么