矩陣(Matrix)

矩陣

說明

模板類matrix<T, F, A> 是密集矩陣(dense matrices)的基容器適配器(base container adaptor)。對於一個(m x n)-維矩陣且0 <= i < m, 0 <= j < n ,對於行優先(row major orientation)的容器,每個元素mi, j 被映射到容器中的第(i x n + j)-th 個元素,或者對於列優先(column major orientation)的容器,每個元素被映射到容器中的第(i + j x m)-th 個元素。element of the container for column major orientation.

例子

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

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

定義

定義在頭文件 matrix.hpp 中。

模板參數

參數 說明 缺省值
T 存儲在矩陣中的對象的類型。
F 描述存儲組織的函數對象。 [1] row_major
A 存儲(Storage)數組。 [2] unbounded_array<T>

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

沒有,除了由矩陣(Matrix) 所施加的類型要求。

公有基類(Public base classes)

matrix_container<matrix<T, F, A> >

成員

成員 說明
matrix () 分配一個包含0個元素且沒有初始化的(uninitialized)matrix
matrix (size_type size1, size_type size2) 返回一個包含size1size2個元素的未初始化的(uninitialized)matrix
matrix (const matrix &m) 拷貝構造函數。
template<class AE>
matrix (const matrix_expression<AE> &ae)
擴展拷貝構造函數。
void resize (size_type size1, size_type size2, bool preserve = true) 重新分配一個包含size1size2個元素的matrix。 如果指定,matrix中已經存在的元素將會被保留。
size_type size1 () const 返回行數。
size_type size2 () const 返回行數
const array_type& data () const
array_type& data ()
const_reference operator () (size_type i, size_type j) const 返回第i-th行第j-th列的元素的const 引用。
reference operator () (size_type i, size_type j) 返回第i-th行第j-th列的元素的引用。
matrix &operator = (const matrix &m) 賦值運算符。
matrix &assign_temporary (matrix &m) 賦值給一個臨時變量。可能會改變矩陣m
template<class AE>
matrix &operator = (const matrix_expression<AE> &ae)
擴展的賦值運算符。
template<class AE>
matrix &assign (const matrix_expression<AE> &ae)
將一個矩陣表達式賦給一個矩陣。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
matrix &operator += (const matrix_expression<AE> &ae)
一個運算賦值運算符。將一個矩陣表達式加到一個矩陣中。
template<class AE>
matrix &plus_assign (const matrix_expression<AE> &ae)
將一個矩陣表達式加到一個矩陣中。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
matrix &operator -= (const matrix_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。從一個矩陣中減去一個矩陣表達式。
template<class AE>
matrix &minus_assign (const matrix_expression<AE> &ae)
從一個矩陣中減去一個矩陣表達式。賦值的左邊和右邊應當是相互獨立的。
template<class AT>
matrix &operator *= (const AT &at)
一個運算賦值運算符。將一個矩陣乘以一個標量。
template<class AT>
matrix &operator /= (const AT &at)
一個運算賦值運算符。將一個矩陣除以一個標量。
void swap (matrix &m) 交換矩陣的內容。
void insert_element (size_type i, size_type j, const_reference t) t插入到第i-th行第j-th列 。
void erase_element (size_type i, size_type j) 刪除第i-th行第j-th個元素。
void clear () 清除矩陣。
const_iterator1 begin1 () const 返回指向matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向matrix終止處的const_iterator1
iterator1 begin1 () 返回指向matrix開始處的iterator1
iterator1 end1 () 返回指向matrix終止處的iterator1
const_iterator2 begin2 () const 返回指向matrix開始處的const_iterator2
const_iterator2 end2 () const 返回指向matrix終止處的const_iterator2
iterator2 begin2 () 返回指向matrix開始處的iterator2
iterator2 end2 () 返回指向matrix終止處的iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)matrix終止處的const_reverse_iterator1
reverse_iterator1 rbegin1 () 返回指向反轉的(reverse)matrix開始處的reverse_iterator1
reverse_iterator1 rend1 () 返回指向反轉的(reverse)matrix終止處的reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reverse)matrix開始處的const_reverse_iterator2
reverse_iterator2 rbegin2 () 返回指向反轉的(reversed)matrix開始處的reverse_iterator2
reverse_iterator2 rend2 () 返回指向反轉的(reverse)matrix開始處的reverse_iterator2

Notes

[1] 對於存儲組織(storage organization)所支持的參數是row_majorcolumn_major

[2] 對於存儲數組( storage array )的一般參數是unbounded_array<T> , bounded_array<T>std::vector<T>

Identity Matrix

說明

模板類identity_matrix<T, ALLOC> 表示 identity matrices。對於一個(m x n)-維 identity matrix 且0 <= i < m, 0 <= j < n 滿足idi, j = 0,如果i <> j, 且 idi, i= 1

例子

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

int main () {
    using namespace boost::numeric::ublas;
    identity_matrix<double> m (3);
    std::cout << m << std::endl;
}

定義

定義在頭文件 matrix.hpp 中。

模板參數

參數 說明 缺省值
T 存儲在矩陣中的對象的類型。 int
ALLOC 針對於 size_type 和 difference_type的STL分配器(Allocator). std::allocator

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

沒有,除了由矩陣(Matrix) 所施加的類型要求。

公有基類(Public base classes)

matrix_container<identity_matrix<T> >

成員

成員 說明
identity_matrix () 構造一個包含0行0個元素的identity_matrix
identity_matrix (size_type size) 構造一個包含sizesize個元素的identity_matrix
identity_matrix (const identity_matrix &m) 拷貝構造函數。
void resize (size_type size, bool preserve = true) 重設identity_matrix大小來包含 sizesize個元素。 因此itendity_matrix中已經存在的元素將會一直保留。
size_type size1 () const 返回行數。
size_type size2 () const 返回列數。
const_reference operator () (size_type i, size_type j) const 返回第i-th行第j-th列的元素的常引用。
identity_matrix &operator = (const identity_matrix &m) 賦值運算符。
identity_matrix &assign_temporary (identity_matrix &m) 賦值給一個臨時變量。可能會改變identity matrix m
void swap (identity_matrix &m) 交換identity matrices的內容。
const_iterator1 begin1 () const 返回指向identity_matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向identity_matrix終止處的const_iterator1
const_iterator2 begin2 () const 返回指向identity_matrix開始處的const_iterator2
const_iterator2 end2 () const 返回指向identity_matrix終止處的const_iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)identity_matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)identity_matrix終止處的const_reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)identity_matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)identity_matrix終止處的const_reverse_iterator2

Zero Matrix

說明

模板類zero_matrix<T, ALLOC> 表示零矩陣(zero matrices)。對於一個(m x n)-維零矩陣且0 <= i < m, 0 <= j < n 滿足zi, j = 0

例子

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

int main () {
    using namespace boost::numeric::ublas;
    zero_matrix<double> m (3, 3);
    std::cout << m << std::endl;
}

定義

定義在頭文件 matrix.hpp 中。

模板參數

參數 說明 缺省值
T 存儲在矩陣中的對象的類型。 int
ALLOC 針對於size_type 和 difference_type的STL分配器(Allocator). std::allocator

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

沒有,除了由矩陣(Matrix) 所施加的類型要求。

公有基類(Public base classes)

matrix_container<zero_matrix<T> >

成員

成員 說明
zero_matrix () 構造一個包含0行0個元素的zero_matrix
zero_matrix (size_type size1, size_type size2) 構造一個包含size1size2個元素的zero_matrix
zero_matrix (const zero_matrix &m) 拷貝構造函數。
void resize (size_type size1, size_type size2, bool preserve = true) 重設zero_matrix大小來包含size1size2個元素。 因此,zero_matrix中的元素將會一直保留。
size_type size1 () const 返回行數。
size_type size2 () const 返回列數。
const_reference operator () (size_type i, size_type j) const 返回第i-th行第 j-th列的元素的常引用。
zero_matrix &operator = (const zero_matrix &m) 賦值運算符。
zero_matrix &assign_temporary (zero_matrix &m) 賦值給一個臨時變量。可能會改變零矩陣m
void swap (zero_matrix &m) 交換零矩陣的內容。
const_iterator1 begin1 () const 返回指向zero_matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向zero_matrix終止處的const_iterator1
const_iterator2 begin2 () const 返回指向zero_matrix開始處的 const_iterator2
const_iterator2 end2 () const 返回指向zero_matrix終止處的const_iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)zero_matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)zero_matrix終止處的const_reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)zero_matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)zero_matrix終止處的const_reverse_iterator2

Scalar Matrix

說明

模板類scalar_matrix<T, ALLOC> 表示標量矩陣(scalar matrices)。對於一個(m x n)-維標量矩陣且0 <= i < m, 0 <= j < n 滿足zi, j = s

例子

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

int main () {
    using namespace boost::numeric::ublas;
    scalar_matrix<double> m (3, 3);
    std::cout << m << std::endl;
}

定義

定義在頭文件 matrix.hpp 中。

模板參數

參數 說明 缺省值
T The type of object stored in the matrix. int
ALLOC An STL Allocator for size_type and difference_type. std::allocator

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

沒有,除了由矩陣(Matrix) 所施加的類型要求。

公有基類(Public base classes)

matrix_container<scalar_matrix<T> >

成員

成員 說明
scalar_matrix () 構造一個標量行(scalar row)0個元素的scalar_matrix
scalar_matrix (size_type size1, size_type size2, const value_type &value) 構造一個包含size1size2個元素的scalar_matrix,每個元素都是一個指定的值。
scalar_matrix (const scalar_matrix &m) 拷貝構造函數。
void resize (size_type size1, size_type size2, bool preserve = true) 重設scalar_matrix大小來包含size1size2個元素。因此,scalar_matrix 中已經存在的元素將被保留。
size_type size1 () const 返回行數。
size_type size2 () const 返回列數。
const_reference operator () (size_type i, size_type j) const 返回第i-th行第j-th列的元素。
scalar_matrix &operator = (const scalar_matrix &m) 賦值運算符。
scalar_matrix &assign_temporary (scalar_matrix &m) 賦值給一個臨時變量。可能會改變標量矩陣 m
void swap (scalar_matrix &m) 交換標量矩陣的內容。
const_iterator1 begin1 () const 返回指向scalar_matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向scalar_matrix終止處的const_iterator1
const_iterator2 begin2 () const 返回指向scalar_matrix開始處的const_iterator2
const_iterator2 end2 () const 返回指向scalar_matrix終止處的const_iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)scalar_matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)scalar_matrix終止處的const_reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)scalar_matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)scalar_matrix終止處的const_reverse_iterator2

Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt ).