特征 3 方形数组除以列数组



我想将方形数组(b( 的每一行除以列数组 (a( 的转置。

测试代码也在 godbolt.org,它安装了特征 3 库。

预期成果:

// before (a)
2
2
2
// before (b)
2 2 2
4 4 4
6 6 6
// after
1 1 1
2 2 2
3 3 3

测试:

#include <Eigen/Eigen>
#include <iostream>
using namespace Eigen;
int main() {
ArrayXXf a(3, 1);
a << 2, 2, 2;
ArrayXXf b(3, 3);
b << 2, 2, 2, 4, 4, 4, 6, 6, 6;
std::cout << a << "n";
std::cout << b << "n";
b.rowwise() /= a.transpose();
std::cout << b << "n";
}

编译错误

...
error: static assertion failed: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX
...

相关问题:

特征:将每行除以最后一行

公认的答案是在转换为特征数组的特征矩阵上使用行。我只是不明白为什么它在我的情况下不起作用......

断言告诉您正在使用矩阵(也称为 2D 数组(,而编译时向量(也称为 1D 数组(是预期的。因此,解决方案是将a定义为编译时一维数组:

ArrayXf a(3);

您还可以根据标准线性代数看到此操作:

VectorXd a(3);
MatrixXd b(3,3);
b = b * a.asDiagonal().inverse();

最新更新