Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Matrix Proxies

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Matrix Proxies

Matrix Row

Description

Шаблон класса<matrix_row<M>>позволяет адресовать строку матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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) {
        matrix_row<matrix<double> > mr (m, i);
        for (unsigned j = 0; j < mr.size (); ++ j)
            mr (j) = 3 * i + j;
        std::cout << mr << std::endl;
    }
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Экспрессия вектора.

Если указанная строка выходит за пределы диапазона индексов строк матрицы, то<matrix_row>не является хорошо сформированным векторным выражением. То есть доступ к элементу, находящемуся вне матрицы,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<matrix_row<M> >>

Members

Member Description
<matrix_row (matrix_type &data, size_type i)> Построение подвектора.
<size_type size () const> Возвращает размер подвектора.
<const_reference operator () (size_type i) const> Возвращает значение<i>-го элемента.
<reference operator () (size_type i)> Возвращает ссылку на<i>-й элемент.
<matrix_row &operator = (const matrix_row &mr)> Оператор назначения.
<matrix_row &assign_temporary (matrix_row &mr)> Назначает временное. Может изменять строку матрицы<mr>.
<template<class AE>
matrix_row &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_row &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_row &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
matrix_row &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_row &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
matrix_row &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_row &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
matrix_row &operator /= (const AT &at)
>
Вычисленный оператор назначения. Разделяет подвектор через скаляр.
<void swap (matrix_row &mr)> Перемещает содержимое подвекторов.
<const_iterator begin () const> <const_iterator>Возвращается, указывая на начало<matrix_row>.
<const_iterator end () const> <const_iterator>Возвращается, указывая на конец<matrix_row>.
<iterator begin ()> Возвращает<iterator>, указывая на начало<matrix_row>.
<iterator end ()> <iterator>Возвращается, указывая на конец<matrix_row>.
<const_reverse_iterator rbegin () const> Возвращает<const_reverse_iterator>, указывая на начало обратного<matrix_row>.
<const_reverse_iterator rend () const> Возвращает<const_reverse_iterator>, указывая на конец обратного<matrix_row>.
<reverse_iterator rbegin ()> <reverse_iterator>, что указывает на начало обратного<matrix_row>.
<reverse_iterator rend ()> <reverse_iterator>Возвращается, указывая на конец обратного<matrix_row>.

Projections

Description

Свободные<row>функции поддерживают построение матричных рядов.

Prototypes


    template<class M>
    matrix_row<M> row (M &data, std::size_t i);
    template<class M>
    const matrix_row<const M> row (const M &data, std::size_t i);

Definition

Определяется в заголовке matrix_proxy.hpp.

Type requirements

Complexity

Линейный в зависимости от размера строки.

Examples

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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)
            row (m, i) (j) = 3 * i + j;
        std::cout << row (m, i) << std::endl;
    }
}

Matrix Column

Description

Класс шаблонов<matrix_column<M>>позволяет обращаться к столбцу матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    matrix<double> m (3, 3);
    for (unsigned j = 0; j < m.size2 (); ++ j) {
        matrix_column<matrix<double> > mc (m, j);
        for (unsigned i = 0; i < mc.size (); ++ i)
            mc (i) = 3 * i + j;
        std::cout << mc << std::endl;
    }
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Экспрессия вектора.

Если указанный столбец выходит за пределы диапазона индекса столбца матрицы, то<matrix_column>не является хорошо сформированным векторным выражением. То есть доступ к элементу, находящемуся вне матрицы,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<matrix_column<M> >>

Members

Member Description
<matrix_column (matrix_type &data, size_type j)> Построение подвектора.
<size_type size () const> Возвращает размер подвектора.
<const_reference operator () (size_type i) const> Возвращает значение<i>-го элемента.
<reference operator () (size_type i)> Возвращает ссылку на<i>-й элемент.
<matrix_column &operator = (const matrix_column &mc)> Оператор назначения.
<matrix_column &assign_temporary (matrix_column &mc)> Назначает временное. Может изменяться матрица столбца<mc>.
<template<class AE>
matrix_column &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_column &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_column &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
matrix_column &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_column &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
matrix_column &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_column &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
matrix_column &operator /= (const AT &at)
>
Вычисленный оператор назначения. Разделяет подвектор через скаляр.
<void swap (matrix_column &mc)> Перемещает содержимое подвекторов.
<const_iterator begin () const> <const_iterator>Возвращается, указывая на начало<matrix_column>.
<const_iterator end () const> <const_iterator>Возвращается, указывая на конец<matrix_column>.
<iterator begin ()> <iterator>, что указывает на начало<matrix_column>.
<iterator end ()> <iterator>Возвращается, указывая на конец<matrix_column>.
<const_reverse_iterator rbegin () const> <const_reverse_iterator>, что указывает на начало обратного<matrix_column>.
<const_reverse_iterator rend () const> <const_reverse_iterator>Возвращается, указывая на конец обратного<matrix_column>.
<reverse_iterator rbegin ()> Возвращает<reverse_iterator>, указывая на начало обратного<matrix_column>.
<reverse_iterator rend ()> Возвращает<reverse_iterator>, указывая на конец обратного<matrix_column>.

Projections

Description

Свободные<column>функции поддерживают конструкцию матричных столбцов.

Prototypes


    template<class M>
    matrix_column<M> column (M &data, std::size_t j);
    template<class M>
    const matrix_column<const M> column (const M &data, std::size_t j);

Definition

Определяется в заголовке matrix_proxy.hpp.

Type requirements

Complexity

Линейный в зависимости от размера колонны.

Examples

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

Vector Range

Description

Класс шаблонов<matrix_vector_range<M>>позволяет адресовать подвектор матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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;
    matrix_vector_range<matrix<double> > mvr (m, range (0, 3), range (0, 3));
    std::cout << mvr << std::endl;
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Экспрессия вектора.

Если указанные диапазоны выходят за пределы индексного диапазона матрицы, то<matrix_vector_range>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне матрицы,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<matrix_vector_range<M> >>

Members

Member Description
<matrix_vector_range (matrix_type &data,
const range &r1, const range &r2)
>
Построение подвектора.
<size_type size () const> Возвращает размер подвектора.
<const_reference operator () (size_type i) const> Возвращает значение<i>-го элемента.
<reference operator () (size_type i)> Возвращает ссылку на<i>-й элемент.
<matrix_vector_range &operator = (const matrix_vector_range &mvr)> Оператор назначения.
<matrix_vector_range &assign_temporary (matrix_vector_range &mvr)> Назначает временное. Может изменять диапазон векторов матрицы<mvr>.
<template<class AE>
matrix_vector_range &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_vector_range &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_vector_range &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
matrix_vector_range &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_vector_range &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
matrix_vector_range &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_vector_range &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
matrix_vector_range &operator /= (const AT &at)
>
Вычисленный оператор назначения. Разделяет подвектор через скаляр.
<void swap (matrix_vector_range &mvr)> Перемещает содержимое подвекторов.
<const_iterator begin () const> Возвращает<const_iterator>, указывая на начало<matrix_vector_range>.
<const_iterator end () const> Возвращает<const_iterator>, указывая на конец<matrix_vector_range>.
<iterator begin ()> <iterator>указывает на начало<matrix_vector_range>.
<iterator end ()> 144, что указывает на конец<matrix_vector_range>.
<const_reverse_iterator rbegin () const> <const_reverse_iterator>, что указывает на начало<matrix_vector_range>.
<const_reverse_iterator rend () const> Возвращает<const_reverse_iterator>, указывая на конец обратного<matrix_vector_range>.
<reverse_iterator rbegin ()> Возвращает<reverse_iterator>, указывая на начало обратного<matrix_vector_range>.
<reverse_iterator rend ()> Возвращает<reverse_iterator>, указывая на конец обратного<matrix_vector_range>.

Vector Slice

Description

Класс шаблонов<matrix_vector_slice<M>>позволяет адресовать нарезанный подвектор матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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;
    matrix_vector_slice<matrix<double> > mvs (m, slice (0, 1, 3), slice (0, 1, 3));
    std::cout << mvs << std::endl;
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Экспрессия вектора.

Если указанные срезы выходят за пределы индексного диапазона матрицы, то<matrix_vector_slice>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне матрицы,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<matrix_vector_slice<M> >>

Members

Member Description
<matrix_vector_slice (matrix_type &data,
const slice &s1, const slice &s2)
>
Построение подвектора.
<size_type size () const> Возвращает размер подвектора.
<const_reference operator () (size_type i) const> Возвращает значение<i>-го элемента.
<reference operator () (size_type i)> Возвращает ссылку на<i>-й элемент.
<matrix_vector_slice &operator = (const matrix_vector_slice &mvs)> Оператор назначения.
<matrix_vector_slice &assign_temporary (matrix_vector_slice &mvs)> Назначает временное. Может изменять вектор матрицы срезом<vs>.
<template<class AE>
matrix_vector_slice &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_vector_slice &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_vector_slice &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
matrix_vector_slice &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_vector_slice &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
matrix_vector_slice &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_vector_slice &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
matrix_vector_slice &operator /= (const AT &at)
>
Вычисленный оператор назначения. Разделяет подвектор через скаляр.
<void swap (matrix_vector_slice &mvs)> Перемещает содержимое подвекторов.
<const_iterator begin () const> Возвращает<const_iterator>, указывая на начало<matrix_vector_slice>.
<const_iterator end () const> Возвращает<const_iterator>, указывая на конец<matrix_vector_slice>.
<iterator begin ()> <iterator>указывает на начало<matrix_vector_slice>.
<iterator end ()> <iterator>, что указывает на конец<matrix_vector_slice>.
<const_reverse_iterator rbegin () const> Возвращает<const_reverse_iterator>, указывая на начало обратного<matrix_vector_slice>.
<const_reverse_iterator rend () const> Возвращает<const_reverse_iterator>, указывая на конец обратного<matrix_vector_slice>.
<reverse_iterator rbegin ()> Возвращает<reverse_iterator>, указывая на начало обратного<matrix_vector_slice>.
<reverse_iterator rend ()> Возвращает<reverse_iterator>, указывая на конец обратного<matrix_vector_slice>.

Matrix Range

Description

Класс шаблонов<matrix_range<M>>позволяет обращаться к подматрице матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    matrix<double> m (3, 3);
    matrix_range<matrix<double> > mr (m, range (0, 3), range (0, 3));
    for (unsigned i = 0; i < mr.size1 (); ++ i)
        for (unsigned j = 0; j < mr.size2 (); ++ j)
            mr (i, j) = 3 * i + j;
    std::cout << mr << std::endl;
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Матричная экспрессия.

Если указанные диапазоны выходят за пределы индексного диапазона матрицы, то<matrix_range>не является хорошо сформированным выражением матрицы. То есть доступ к элементу, который находится вне матрицы,не определен.

Type requirements

Нет, кроме тех, которые налагаются требованиямиМатричного выражения.

Public base classes

<matrix_expression<matrix_range<M> >>

Members

Member Description
<matrix_range (matrix_type &data,
const range &r1, const range &r2)
>
Построение подматрицы.
<size_type start1 () const> Возвращает индекс первого ряда.
<size_type size1 () const> Возвращает количество строк.
<size_type start2 () const> Возвращает индекс первой колонки.
<size_type size2 () const> Возвращает количество колонок.
<const_reference operator () (size_type i, size_type j) const> Возвращает значение<j>-го элемента в<i>-го ряда.
<reference operator () (size_type i, size_type j)> Возвращает ссылку на<j>-й элемент в<i>-й строке.
<matrix_range &operator = (const matrix_range &mr)> Оператор назначения.
<matrix_range &assign_temporary (matrix_range &mr)> Назначает временное. Может изменять диапазон матрицы<mr>.
<template<class AE>
matrix_range &operator = (const matrix_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_range &assign (const matrix_expression<AE> &ae)
>
Назначает матричную экспрессию на подматрицу. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_range &operator += (const matrix_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет выражение матрицы в подматрицу.
<template<class AE>
matrix_range &plus_assign (const matrix_expression<AE> &ae)
>
Добавляет выражение матрицы в подматрицу. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_range &operator -= (const matrix_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает выражение матрицы из подматрицы.
<template<class AE>
matrix_range &minus_assign (const matrix_expression<AE> &ae)
>
Вычитает выражение матрицы из подматрицы. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_range &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает подматрицу на скаляр.
<template<class AT>
matrix_range &operator /= (const AT &at)
>
Вычисленный оператор назначения. Разделяет подматрицу через скаляр.
<void swap (matrix_range &mr)> Изменяет содержание подматриц.
<const_iterator1 begin1 () const> Возвращает<const_iterator1>, указывая на начало<matrix_range>.
<const_iterator1 end1 () const> <const_iterator1>, указывающий на конец<matrix_range>.
<iterator1 begin1 ()> <iterator1>указывает на начало<matrix_range>.
<iterator1 end1 ()> <iterator1>, что указывает на конец<matrix_range>.
<const_iterator2 begin2 () const> Возвращает<const_iterator2>, указывая на начало<matrix_range>.
<const_iterator2 end2 () const> <const_iterator2>, что указывает на конец<matrix_range>.
<iterator2 begin2 ()> <iterator2>, что указывает на начало<matrix_range>.
<iterator2 end2 ()> Возвращает<iterator2>, указывая на конец<matrix_range>.
<const_reverse_iterator1 rbegin1 () const> Возвращает<const_reverse_iterator1>, указывая на начало обратного<matrix_range>.
<const_reverse_iterator1 rend1 () const> Возвращает<const_reverse_iterator1>, указывая на конец обратного<matrix_range>.
<reverse_iterator1 rbegin1 ()> Возвращает<reverse_iterator1>, указывая на начало обратного<matrix_range>.
<reverse_iterator1 rend1 ()> Возвращает<reverse_iterator1>, указывая на конец обратного<matrix_range>.
<const_reverse_iterator2 rbegin2 () const> Возвращает<const_reverse_iterator2>, указывая на начало обратного<matrix_range>.
<const_reverse_iterator2 rend2 () const> Обратный<const_reverse_iterator2>указывает на конец обратного<matrix_range>.
<reverse_iterator2 rbegin2 ()> Возвращает<reverse_iterator2>, указывая на начало обратного<matrix_range>.
<reverse_iterator2 rend2 ()> Возвращает<reverse_iterator2>, указывая на конец обратного<matrix_range>.

Simple Projections

Description

Свободные<subrange>функции поддерживают построение матричных диапазонов.

Prototypes


    template<class M>
    matrix_range<M> subrange (M &data,
       M::size_type start1, M::size_type stop1, M::size_type start2, M::size_type, stop2);
    template<class M>
    const matrix_range<const M> subrange (const M &data,
       M::size_type start1, M::size_type stop1, M::size_type start2, M::size_type, stop2);

Generic Projections

Description

Свободные<project>функции поддерживают построение матричных диапазонов. Существующие<matrix_range>могут быть составлены с дальнейшими диапазонами. Полученные диапазоны вычисляются с использованием функции<compose>существующих диапазонов.

Prototypes


    template<class M>
    matrix_range<M> project (M &data, const range &r1, const range &r2);
    template<class M>
    const matrix_range<const M> project (const M &data, const range &r1, const range &r2);
    template<class M>
    matrix_range<M> project (matrix_range<M> &data, const range &r1, const range &r2);
    template<class M>
    const matrix_range<M> project (const matrix_range<M> &data, const range &r1, const range &r2);

Definition

Определяется в заголовке matrix_proxy.hpp.

Type requirements

Complexity

Квадратный в зависимости от размера диапазонов.

Examples

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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)
            project (m, range (0, 3), range (0, 3)) (i, j) = 3 * i + j;
    std::cout << project (m, range (0, 3), range (0, 3)) << std::endl;
}

Matrix Slice

Description

Класс шаблонов<matrix_slice<M>>позволяет обращаться к нарезанной подматрице матрицы.

Example

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    matrix<double> m (3, 3);
    matrix_slice<matrix<double> > ms (m, slice (0, 1, 3), slice (0, 1, 3));
    for (unsigned i = 0; i < ms.size1 (); ++ i)
        for (unsigned j = 0; j < ms.size2 (); ++ j)
            ms (i, j) = 3 * i + j;
    std::cout << ms << std::endl;
}

Definition

Определяется в заголовке matrix_proxy.hpp.

Template parameters

Parameter Description Default
<M> Тип используемой матрицы.

Model of

Матричная экспрессия.

Если указанные срезы выходят за пределы индексного диапазона матрицы, то<matrix_slice>не является хорошо сформированным выражением матрицы. То есть доступ к элементу, находящемуся вне матрицы,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиМатричного выражения.

Public base classes

<matrix_expression<matrix_slice<M> >>

Members

Member Description
<matrix_slice (matrix_type &data,
const slice &s1, const slice &s2)
>
Построение подматрицы.
<size_type size1 () const> Возвращает количество строк.
<size_type size2 () const> Возвращает количество колонок.
<const_reference operator () (size_type i, size_type j) const> Возвращает значение<j>-го элемента в<i>-го ряда.
<reference operator () (size_type i, size_type j)> Возвращает ссылку на<j>-й элемент в<i>-й строке.
<matrix_slice &operator = (const matrix_slice &ms)> Оператор назначения.
<matrix_slice &assign_temporary (matrix_slice &ms)> Назначает временное. Может изменяться срез матрицы<ms>.
<template<class AE>
matrix_slice &operator = (const matrix_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
matrix_slice &assign (const matrix_expression<AE> &ae)
>
Назначает матричную экспрессию на подматрицу. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_slice &operator += (const matrix_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет выражение матрицы в подматрицу.
<template<class AE>
matrix_slice &plus_assign (const matrix_expression<AE> &ae)
>
Добавляет выражение матрицы в подматрицу. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
matrix_slice &operator -= (const matrix_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает выражение матрицы из подматрицы.
<template<class AE>
matrix_slice &minus_assign (const matrix_expression<AE> &ae)
>
Вычитает выражение матрицы из подматрицы. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
matrix_slice &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает подматрицу на скаляр.
<template<class AT>
matrix_slice &operator /= (const AT &at)
>
Вычисленный оператор назначения. Умножает подматрицу через скаляр.
<void swap (matrix_slice &ms)> Изменяет содержание подматриц.
<const_iterator1 begin1 () const> Возвращает<const_iterator1>, указывая на начало<matrix_slice>.
<const_iterator1 end1 () const> 330, что указывает на конец<matrix_slice>.
<iterator1 begin1 ()> Возвращает<iterator1>, указывая на начало<matrix_slice>.
<iterator1 end1 ()> Возвращает<iterator1>, указывая на конец<matrix_slice>.
<const_iterator2 begin2 () const> Возвращает<const_iterator2>, указывая на начало<matrix_slice>.
<const_iterator2 end2 () const> <const_iterator2>, что указывает на конец<matrix_slice>.
<iterator2 begin2 ()> Возвращает<iterator2>, указывая на начало<matrix_slice>.
<iterator2 end2 ()> Возвращает<iterator2>, указывая на конец<matrix_slice>.
<const_reverse_iterator1 rbegin1 () const> Возвращает<const_reverse_iterator1>, указывая на начало обратного<matrix_slice>.
<const_reverse_iterator1 rend1 () const> Возвращает<const_reverse_iterator1>, указывая на конец обратного<matrix_slice>.
<reverse_iterator1 rbegin1 ()> Возвращает<reverse_iterator1>, указывая на начало обратного<matrix_slice>.
<reverse_iterator1 rend1 ()> Возвращает<reverse_iterator1>, указывая на конец обратного<matrix_slice>.
<const_reverse_iterator2 rbegin2 () const> Возвращает<const_reverse_iterator2>, указывая на начало обратного<matrix_slice>.
<const_reverse_iterator2 rend2 () const> Возвращает<const_reverse_iterator2>, указывая на конец обратного<matrix_slice>.
<reverse_iterator2 rbegin2 ()> Возвращает<reverse_iterator2>, указывая на начало обратного<matrix_slice>.
<reverse_iterator2 rend2 ()> Возвращает<reverse_iterator2>, указывая на конец обратного<matrix_slice>.

Simple Projections

Description

Свободные<subslice>функции поддерживают конструкцию матричных срезов.

Prototypes


    template<class M>
    matrix_slice<M> subslice (M &data,
       M::size_type start1, M::difference_type stride1, M::size_type size1,
       M::size_type start2, M::difference_type stride2, M::size_type size2);
    template<class M>
    const matrix_slice<const M> subslice (const M &data,
       M::size_type start1, M::difference_type stride1, M::size_type size1,
       M::size_type start2, M::difference_type stride2, M::size_type size2);

Generic Projections

Description

Свободные<project>функции поддерживают конструкцию матричных срезов. Существующие<matrix_slice>могут быть составлены с дальнейшими диапазонами или срезами. Полученные срезы вычисляются с использованием этой существующей функции срезов<compose>.

Prototypes


    template<class M>
    matrix_slice<M> project (M &data, const slice &s1, const slice &s2);
    template<class M>
    const matrix_slice<const M> project (const M &data, const slice &s1, const slice &s2);
    template<class M>
    matrix_slice<M> project (matrix_slice<M> &data, const range &r1, const range &r2);
    template<class M>
    const matrix_slice<M> project (const matrix_slice<M> &data, const range &r1, const range &r2);
    template<class M>
    matrix_slice<M> project (matrix_slice<M> &data, const slice &s1, const slice &s2);
    template<class M>
    const matrix_slice<M> project (const matrix_slice<M> &data, const slice &s1, const slice &s2);

Definition

Определяется в заголовке matrix_proxy.hpp.

Type requirements

Complexity

Квадратный в зависимости от размера срезов.

Examples

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.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)
            project (m, slice (0, 1, 3), slice (0, 1, 3)) (i, j) = 3 * i + j;
    std::cout << project (m, slice (0, 1, 3), slice (0, 1, 3)) << std::endl;
}

Авторское право (©) 2000-2002 Йорг Уолтер, Матиас Кох
На использование, модификацию и распространение распространяется лицензия Boost Software License, Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу) http://www.boost.org/LICENSE_1_0.txt.

Статья Matrix Proxies раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 22:38:12/0.0093421936035156/0