簡體   English   中英

如何將向量分配給特征中的矩陣

[英]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 loop theta1.size is:1 1 1 7.82347e-10 visual_servo_node: /usr/include/eigen3/Eigen/src/Core/Block.h:123: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Index) [with XprType = Eigen::Matrix<float, -1, -1>; int BlockRows = -1; int BlockCols = 1; 布爾內面板=真; Eigen::Index = long int]: 斷言 `(i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows()) ||((BlockRows ==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols()))' 失敗。 中止(核心轉儲)

在調用VectorsCam.col(i)之前,您必須確保VectorsCam至少有i+1列。 並且當分配VectorsCam.col(i) = VectorCam; VectorsCam 中的行數必須與VectorsCam中的行數VectorCam

循環前寫

Eigen::MatrixXf VectorsCam(3, theta1.size()); // Matrix contains the vectors

(我假設循環是為了for (int i=0; i<theta1.size(); i++)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM