c++ 通过索引设置特征矩阵/向量

bjg7j2ky  于 2023-03-09  发布在  其他
关注(0)|答案(3)|浏览(189)

我们如何通过索引设置特征向量或矩阵的值呢?我试着做一些类似的事情:

// Assume row major
matrix[i][j] = value
// or
vector[i] = value

我可能错过了它,但在quick reference guide中找不到任何东西。

whlutmcx

whlutmcx1#

正如用户chtz所指出的,问题是“auto”关键字的使用,这将在这里的Eigen website上进一步解释。
以下两项:

// Assume row major
matrix(i,j) = value
// or
vector(i) = value

应该能正常工作。我在VectorXf上做了测试,它确实能正常工作。

4szc88ey

4szc88ey2#

块操作是一种选择:

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;
shyt4zoc

shyt4zoc3#

this页面的“系数访问器”部分:
请注意,m(index)语法并不局限于向量,它也适用于一般矩阵,即系数数组中基于索引的访问。但这取决于矩阵的存储顺序。所有特征矩阵默认为以列为主的存储顺序,但可以更改为以行为主,请参阅存储顺序。
operator[]也被重载用于向量中基于索引的访问,但请记住,C不允许operator[]带有多个参数,我们将operator[]限制为向量,因为 C 中的一个尴尬之处是,matrix[i,j]编译成与matrix[j]相同的东西!

相关问题