Hi Ralf,


thanks for the tip. Can I convert a ublas::vector<std::size_t> direct to the indirect_array

or should I copy element by element?


Thanks


Phil


On 2010-07-23 08:48:08 +0200, Ralf Denzer said:


Hallo Philipp, 


yes, something very similar works: 

Please check  indirect_array<> in ublas/storage.hpp

It's not well documented, but works since long time.


Something like the following should work: 


//----------------------------

namespace ublas = boost::numeric::ublas;


const unsigned N = 7;

ublas::matrix<int> A(N,N);

ublas::vector<int> V(N);


... fill matrix A and vector V here ...


// define an indirect_array

const unsigned n = 3;

ublas::indirect_array<> ia(n);

ia[0] = 1;

ia[1] = 2;

ia[2] = 4;


// ia(n) to extract some indices

ublas::matrix_indirect<ublas::matrix<int> > Mindirect(M, ia,ia);

std::cout << "Mindirect=\n" << Mindirect << std::endl;


// or use ublas::project

std::cout << "Mprojected=\n" << ublas::project(M, ia, ia) << std::endl;


// similar for vectors

ublas::vector_indirect<ublas::vector<int> > Vindirect(V,ia);

std::cout << "Vindirect=\n" << Vindirect << std::endl;


// and

std::cout << "Vprojected=\n" << ublas::project(V, ia) << std::endl;


//----------------------------


Thus, with 'ublas::indirect_array<> indexvector' you should be able 

to peform exactly your operation 


project(x, indexvector, indexvector) += other matrix with indexvector.size x indexvector.size


Bye 


Ralf 


PS: Thanks to David, at least ublas::matrix_indirect and ublas::vector_indirect

is now a bit documented. See http://ublas.sourceforge.net/refdoc/



 Hello, 


can I extract a submatrix from a ublas::matrix with an indexvector? I've got a ublas::vector with index values and a ublas::matrix(1000,1000). The indexvector holds only 12 index position and I need something like: 


ublas::matrix x(1000,1000); 

project(x, indexvector, indexvector) += other matrix with indexvector.size x indexvector.size 


I must cut a submatrix which is not continously and adds another matrix.  Are there any boost operations or should I run over all elements? 


Thanks 


Phil

  


<image>

Neu: WEB.DE De-Mail - Einfach wie E-Mail, sicher wie ein Brief!    

Jetzt De-Mail-Adresse reservieren: https://produkte.web.de/go/demail02

_______________________________________________

ublas mailing list

ublas@lists.boost.org

http://lists.boost.org/mailman/listinfo.cgi/ublas

Sent to: gclbu-ublas-dev-3@gmane.org