按索引设置 Eigen Matrix/Vector
Setting Eigen Matrix/Vector by index
我们究竟如何通过索引设置特征向量或矩阵的值。我正在尝试做类似的事情:
// Assume row major
matrix[i][j] = value
// or
vector[i] = value
我可能错过了,但在 quick reference guide.
中找不到任何内容
正如用户 chtz 所指出的,问题出在 'auto' 关键字的用法上,Eigen website 此处对此进行了进一步解释。
以下两项:
// Assume row major
matrix(i,j) = value
// or
vector(i) = value
应该可以正常工作。我在 VectorXf 上进行了测试,它确实可以正常工作。
块操作是一种选择:
Eigen::Vector4f diag_Vec(1, 2, 4, 7);
Eigen::Matrix4f Mat = diag_Vec.matrix().asDiagonal();
Mat.block<1, 1>(2, 3) = Eigen::Matrix<float, 1, 1>(-4.5);
Mat.block<1, 1>(3, 2) = Eigen::Matrix<float, 1, 1>(1);
cout << "Mat: \n" <<Mat << endl;
我们究竟如何通过索引设置特征向量或矩阵的值。我正在尝试做类似的事情:
// Assume row major
matrix[i][j] = value
// or
vector[i] = value
我可能错过了,但在 quick reference guide.
中找不到任何内容正如用户 chtz 所指出的,问题出在 'auto' 关键字的用法上,Eigen website 此处对此进行了进一步解释。
以下两项:
// Assume row major
matrix(i,j) = value
// or
vector(i) = value
应该可以正常工作。我在 VectorXf 上进行了测试,它确实可以正常工作。
块操作是一种选择:
Eigen::Vector4f diag_Vec(1, 2, 4, 7);
Eigen::Matrix4f Mat = diag_Vec.matrix().asDiagonal();
Mat.block<1, 1>(2, 3) = Eigen::Matrix<float, 1, 1>(-4.5);
Mat.block<1, 1>(3, 2) = Eigen::Matrix<float, 1, 1>(1);
cout << "Mat: \n" <<Mat << endl;