Eigen library --> initialize matrix with data from file or existing std::vector content (c++)

前端 未结 7 1187
你的背包
你的背包 2020-12-25 08:00

My question is how to initialize an eigen Matrix, but NOT this way:

matrix << 1,0,1,0,
          1,0,1,0,
          1,0,1,0,
         


        
7条回答
  •  感动是毒
    2020-12-25 08:36

    I think I found a solution! Its not fast or efficient but it works:

    #include "topo.h"
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    
    using namespace std;
    using namespace Eigen;
    
    /**Read data from File and store it in vector as string**/
    int readFromFile (const char * path, vector  & mv) // muss vector vorher resized werden? wenn ja lese zeilenanzahl
    {
        fstream file;
        string line;
        file.open(path);
    
        while (getline(file,line)) // lese zeile für zeile
        {
            mv.push_back(line); //fülle vector von hinten last in first
        }
        file.close();
        return 0;
    }
    
    
    typedef Matrix  MyMatrix; // Matrix später dynamisch
    
    /**Parsing data to be used as Eigen Matrix**/
    int fromVectoEigen (vector & source, MyMatrix & target)
    {   /**convert string to int and write it to the two dimensional array **/
        int array [4][4]; // noch resize nach vectorsize -->matrizen sind quadratisch
        int i = source.size();
        for ( i= i-1 ; i >= 0 ; i-- ) // da nur von hintern auf vector zugreifbar auch von hinten bei array anfangen
        {
            string myString = source.back(); // leztzes Element von Vector als String
            stringstream ssin(myString);
            int j = 0;
            while (ssin.good() && j < 4) // auch hier vectorsize später dynamisch
                {
                ssin >> array[j][i]; // fülle spalten in i.ter zeile
                ++j;
                }
    
    
            source.pop_back(); //lösche letztes element
    
        }
    //        cout<(newarray);
        target.transposeInPlace();
        cout<

提交回复
热议问题