如何将向量分配给特征中的矩阵
How to assing a vector to a matrix in eigen
我想将向量分配给动态大小的矩阵。如以下代码:
Eigen::Vector3f VectorCam; // Vector in camera frame
Eigen::MatrixXf VectorsCam; // Matrix contains the vectors
for (int i=0; i<=theta1.size(); i++)
{
std::cout << "I'm In theta1.size for loop" << std::endl;
VectorCam << sin(theta1[i]), sin(theta2[i]), cos(theta1[i])*cos(theta2[i]);
std::cout << "theta1.size is:" << theta1.size() << std::endl;
std::cout << VectorCam << std::endl;
VectorsCam.col(i) = VectorCam; // Matrix of Camera Vectors
std::cout << "Vectorscam" << VectorsCam << std::endl;
}
在终端中我得到了这个(在 #### 下方)!知道 for 循环仍然在第一个 运行 并且它应该在退出前至少 运行 2 次!我认为问题出在 VectorsCam.col(i)
########
我在 theta1.size for 循环中
theta1.size is:1
1个
1个
7.82347e-10
visual_servo_node: /usr/include/eigen3/Eigen/src/Core/Block.h:123: Eigen::Block::Block(XprType&, Eigen::Index) [with XprType = Eigen::Matrix<浮动,-1,-1>; int BlockRows = -1; int BlockCols = 1;布尔内面板=真; Eigen::Index = long int]: 断言`(i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i
在调用 VectorsCam.col(i)
之前,您必须确保 VectorsCam
至少有 i+1
列。并且在分配 VectorsCam.col(i) = VectorCam;
时,VectorsCam
中的行数必须与 VectorCam
中的行数匹配。
循环写入前
Eigen::MatrixXf VectorsCam(3, theta1.size()); // Matrix contains the vectors
(我假设循环是 for (int i=0; i<theta1.size(); i++)
)
我想将向量分配给动态大小的矩阵。如以下代码:
Eigen::Vector3f VectorCam; // Vector in camera frame
Eigen::MatrixXf VectorsCam; // Matrix contains the vectors
for (int i=0; i<=theta1.size(); i++)
{
std::cout << "I'm In theta1.size for loop" << std::endl;
VectorCam << sin(theta1[i]), sin(theta2[i]), cos(theta1[i])*cos(theta2[i]);
std::cout << "theta1.size is:" << theta1.size() << std::endl;
std::cout << VectorCam << std::endl;
VectorsCam.col(i) = VectorCam; // Matrix of Camera Vectors
std::cout << "Vectorscam" << VectorsCam << std::endl;
}
在终端中我得到了这个(在 #### 下方)!知道 for 循环仍然在第一个 运行 并且它应该在退出前至少 运行 2 次!我认为问题出在 VectorsCam.col(i)
########
我在 theta1.size for 循环中
theta1.size is:1
1个
1个
7.82347e-10
visual_servo_node: /usr/include/eigen3/Eigen/src/Core/Block.h:123: Eigen::Block
在调用 VectorsCam.col(i)
之前,您必须确保 VectorsCam
至少有 i+1
列。并且在分配 VectorsCam.col(i) = VectorCam;
时,VectorsCam
中的行数必须与 VectorCam
中的行数匹配。
循环写入前
Eigen::MatrixXf VectorsCam(3, theta1.size()); // Matrix contains the vectors
(我假设循环是 for (int i=0; i<theta1.size(); i++)
)