c++ - 将变换应用于特征中包含 vector 的矩阵的更短方法?

标签 c++ eigen

是否有更短的方法来应用转换?

auto vecs = Matrix<float, Dynamic, 3>(); //vector in each row.
Affine3f transform = ...; // some Affine3 transform

for (int r = 0; r < vecs.rows(); r++) {
    Vector3f v = vecs.row(r);
    v = transform * v;
    vecs.row(r) = v;
}

最佳答案

您可以直接对存储在矩阵中的一组列 vector 应用仿射变换。由于 vector 是按行排列的,因此需要转置矩阵。因此,您的 for 循环减少为:

vecs.transpose() = transform * vecs.transpose();

关于c++ - 将变换应用于特征中包含 vector 的矩阵的更短方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38841606/

相关文章:

c++ - 随机(只读)访问 Eigen::SparseVector 的元素

c++ - C++11 中 std::less 的模板特化,使用模板

c++ - 错误 : invalid conversion from 'void (*)()' to 'void (*)()' -- what?

c++ - MVC 4 将数据传递给部分 View - 格式

c++ - 打开文件 'write' 比打开文件 'read' 花费的时间多 10-50 倍

c++ - 0x7A47E727中未处理的异常

c++ - 求解线性方程组的最有效方法

c++ - 失去焦点时应用程序卡住

gcc - 使用 GCC 编译器优化进行多线程时,Eigen 3.3 共轭梯度速度较慢

c++ - Eigen 初始化 bool 数组