2010-07-13 6 views
1

J'ai ceci:comment ajouter une matrice à la fin d'une autre matrice? (À l'aide des bibliothèques Boost en C++)

using namespace boost::numeric::ublas; 
    matrix<double> m (3, 2); 

    int k = 0; 
    for (int j = 0; j < m.size1(); j++) { 
     for (int i = 0; i < m.size2(); i++) 
      m (j, i) = k++; 
    } 

    m = 
    0 1 
    2 3 
    4 5 

Et je dois ajouter une autre m2 matrice m

matrix<double> m2 (3, 1); 
k = 0; 
for (int i = 0; i < m2.size2(); i++) 
    m (i, 0) = k++; 

m2 = 
    0 
    1 
    2 

Alors, ce que je dois faire pour avoir cette

m = 
     0 1 0 
     2 3 1 
     4 5 2 

Où puis-je trouver plus d'informations sur les opérations comme celle-ci? Je demande parce que l'information sur http://www.boost.org/doc/libs/1_43_0/libs/numeric/ublas/doc/index.htm ressemble plus à une API, et il n'a pas été si utile jusqu'à présent.

Répondre

2

Eh bien, ce n'est pas élégant, mais est mon premier essai:

m.resize(m.size1(), m.size2()+1, true); 
column(m, m.size2()) = column(m2, 0); 

et, bien sûr, il doit être ajusté si m2 a plus d'une colonne (ou s'il existe des différences dans taille1 entre les deux matrices)