20 Şubat 2018 Salı

ublas

Giriş
ublas eski bir kütüphane. Açıklaması şöyle
uBLAS is more than 10 years old and missed all new stuff from C++11.
BOOST_UBLAS_TYPE_CHECK Macrosu
Açıklaması şöyle

BOOST_UBLAS_TYPE_CHECK

When BOOST_UBLAS_TYPE_CHECK is enabled then all possibly expensive structure checks are enabled. If this is not desireable then use #define BOOST_UBLAS_TYPE_CHECK 0 before including any uBLAS header. The define BOOST_UBLAS_TYPE_CHECK_EPSILON can be used to control the acceptable tolerance, see detail/matrix_assign.hpp for implementation details of this check.
matrix Sınıfı
Şu satırı dahil ederiz.
#include <boost/numeric/ublas/matrix.hpp>
Şöyle tanımlanır.
typedef boost::numeric::ublas::matrix<double> matrix_type;
Constructor - int + int
Şöyle yaparız. İlk parametre satır, ikinci parametre sütun sayısıdır.
int size = 10; 
boost::numeric::ublas::matrix<double> m (size, size);
Şöyle yaparız.
ublas::matrix<double> m (4, 4); 
operator ()
Şöyle yaparız.
unsigned i = ...;
unsigned j = ...;
double s = m(i, j);
operator (i,j)
Şöyle yaparız.
int i = 0; 
int j = 0;
double v = 10;
m (i,j) = v;
Şöyle yaparız.
ublas::matrix<double> m(4, 4); 
size_t s = 1;
for (size_t i = 0; i < 4; ++i) {
  for (size_t j = 0; j < 4; ++j) {
    m(i, j) = s++;
  }   
}  
operator = metodu
Şöyle yaparız.
const bnu::matrix<double> b = a;
operator << metodu
Şu satırı dahil ederiz.
#include <boost/numeric/ublas/io.hpp>
Şöyle yaparız.
std::cout << m << ::std::endl; // show a [13X4] matrix
size1 metodu
Şöyle yaparız. matrix kurulurken birinci parametre olan satır sayısını verir.
unsigned int n = m.size1();
size2 metodu
Şöyle yaparız. matrix kurulurken ikinci parametre olan sütun sayısını verir.
unsigned int n = m.size2();
Tüm elemanları dolaşmak için şöyle yaparız.
boost::numeric::ublas::matrix<double> m (10, 10);

for (int i = 0; i < m.size1 (); ++i)
  for (int j = 0; j < m.size2 (); ++j)
    m (i,j) = ...;
matrix_column Sınıfı
Giriş
Matrix Proxies başlığı altına girer. Gereksiz kopyalama yapmadan matris'in satırına erişme imkanı tanır.
Constructor
Şöyle yaparız.
// matrix container of 13 rows and 4 columns
::boost::numeric::ublas::matrix<double> m (13, 4);
for (size_t j = 0; j < m.size2(); ++j){
  boost::numeric::ublas::matrix_column<
        ::boost::numeric::ublas::matrix<double>
    > mc (m, j); // in this case j = 4
  for (size_t i = 0; i < MC.size(); ++i){
    mc(i) = 3 * i + j;
  }
}
matrix_expression Sınıfı
Örnek ver

matrix_row Sınıfı
Matrix Proxies başlığı altına girer. Gereksiz kopyalama yapmadan matris'in satırına erişme imkanı tanır.
vector Sınıfı
vector Sınıfı yazısına taşıdım.

vector_expression Sınıfı
Şu satırı dahil ederiz.
#include <boost/numeric/ublas/vector_expression.hpp>
Örnek ver

Free Style Metodlar
inner metodu
Örnek ver

norm2 metodu
Örnek ver

operator <<= metodu
Şu satırı dahil ederiz.
#include <boost/numeric/ublas/assignment.hpp>
Şöyle yaparız.
bnu::matrix<double> a(3,3); a <<=  0, 1, 2,
                                   3, 4, 5,
                                   6, 7, 8;
prod metodu
Şöyle yaparız.
boost::numeric::ublas::matrix<double> m1 (10, 10);
boost::numeric::ublas::matrix<double> m2 (20, 20);
boost::numeric::ublas::matrix<double> m3 (10, 10);
...
noalias (m3) = prod (m1,m2);
project metodu
AxB'lik yeni bir matris döndürür. Şöyle yaparız.
boost::numeric::ublas::matrix m;

//...

r1 = boost::numeric::ublas::range(i1, i2);
r2 = boost::numeric::ublas::range(i3, i4);
boost::numeric::ublas::project(m, r1, r2) = A;
subrange metodu
İmzası şöyledir. subrange yeni bir matris döner. Yarı açık (Half-open) indeksler kullanır.
M, rowBegin, rowEnd, columnBegin, columnEnd
Şöyle yaparız.
m2 = subrange(m, 0,1,0,5);





Hiç yorum yok:

Yorum Gönder