2011-04-04 11 views
6

Birisi uBLAS ürününün nasıl kullanılacağı ile ilgili bir örnek verebilir misiniz? Ya da daha hoş bir C++ matris kütüphanesi varsa bunu da tavsiye ederim. Bu büyük bir baş ağrısına dönüşüyor.Boost uBLAS matrix/vektör ürün

vector<double> myVec(scalar_vector<double>(3)); 
matrix<double> myMat(scalar_matrix<double>(3,3,1)); 
matrix<double> temp = prod(myVec, myMat); 

İşte hata var: Ben arama tüketmiş

cannot convert from 'boost::numeric::ublas::matrix_vector_binary1<E1,E2,F>' to 'boost::numeric::ublas::matrix<T>' 

İşte benim kod. Stackoverflow'un bu here hakkında bir sorusu var. Destek belgelerinin bir örneği here vardır. Kodu kopyaladım örneğin, ama bana yararı yok çünkü stdout için çalışan şablon büyüsü benim için işe yaramıyor.

#include <boost/numeric/ublas/matrix.hpp> 
#include <boost/numeric/ublas/io.hpp> 

int main() { 
    using namespace boost::numeric::ublas; 
    matrix<double> m (3, 3); 
    vector<double> v (3); 
    for (unsigned i = 0; i < std::min (m.size1(), v.size()); ++ i) { 
     for (unsigned j = 0; j < m.size2(); ++ j) 
      m (i, j) = 3 * i + j; 
     v (i) = i; 
    } 

    std::cout << prod (m, v) << std::endl; 
    std::cout << prod (v, m) << std::endl; 
} 

cevap

3

Ben Boost uBLAS de bu kadar bakmadım ama Eigen emin güzel ve de iyi bir performansa sahiptir.

+0

Teşekkürler, bir göz atacağım. Vay. Şimdiye kadar bunu çok beğeniyorum. Matrix kütüphanesi için biraz zaman harcadım ama bu gelmedi. Genellikle sonuçlarda ve diğerlerinde LAPACK ++ MTL elde edersiniz. Bazen lisanslı değiller. Bazen zarif değiller. – Budric

9

Vektör ve matrisin ürünü bir vektördür, matris değildir.

+0

Evet, işe yarıyor. Her ne kadar neden 1x3 matris için işe yaramadığını görmüyorum. – Budric

+0

Öyle olurdu, ama bunu bir matris olarak ilan etmelisiniz. Sorun, Boost'un hala sadece başlık dosyalarını kullanırken sağlamaya çalıştığı esneklikte olduğunu düşünüyorum. Bazı durumlarda kullanımı zorlaştırır ve şablon karışıklıkları sizi delirtmeye başlar. – JCooper

+0

Boost'u bulmam gereken şey bu. Bence Eigen kütüphanesi (sadece başlıklar) şablonlar, hız ve kullanılabilirlik arasında iyi bir denge kurmayı başardı. Yani Boost uBLAS kullanmak yerine bu çözüm ile gidiyorum. – Budric