我可以使用多个矩阵库,但是在这个项目中,我选择使用Eigen,因为它具有编译时定义和包含SVD的功能。
现在,我正在执行以下操作:
Eigen::Matrix<double,M,N> A; // populated in the code
Eigen::Matrix<double,N,N> B = A.transpose() * A;
据我理解,这个操作是将A进行转置并形成其副本,然后再与A相乘。该操作在相对较小的矩阵上执行(M=20-30,N=3),但每秒要执行数百万次,因此必须尽可能快。
据我了解,使用以下方式会更快:
B.noalias() = A.transpose() * A;
我可以编写自己的子程序来接受A作为输入并填充B,但我想知道是否存在一种高效的现有实现,可以使用最少的周期。