如何动态复制 eigen::matrix

How replicate eigen::matrix dynamically

在计算两个特征图之间的距离矩阵时。

A:(M,1)
B:(N,1)

我想重复 B 列以等于 A 行。

在 NumPy 中很简单:

A = np.random,rand(100, 1)
B = np.random.rand(88, 1)
np.repeat(B, A.shape[0], axis=1)

但在 c++ Eigen 中,不适用于动态分配重复的形状。

MatrixXi A = MatrixXi::Random(100,1);
MatrixXi B = MatrixXi::Random(88,1);

B.replicate<1, A.rows()>(); // This will cause failure

在 C++ 中实现与 python 的 numpy 版本相同效果的正确方法是:

B.replicate<1, 100>(); 

以上将根据需要进行复制。
或者您可以使用:

B.replicate(1, A.rows());