1 | #include <iostream>
|
---|
2 | #include <boost/numeric/ublas/vector.hpp>
|
---|
3 | #include <boost/numeric/ublas/matrix.hpp>
|
---|
4 | #include <boost/numeric/ublas/matrix_proxy.hpp>
|
---|
5 | #include <boost/numeric/ublas/io.hpp>
|
---|
6 | #include <boost/foreach.hpp>
|
---|
7 |
|
---|
8 | #include "matrix_vector.hpp"
|
---|
9 |
|
---|
10 | namespace ublas = boost::numeric::ublas;
|
---|
11 |
|
---|
12 |
|
---|
13 | void test_matrix_row_vector()
|
---|
14 | {
|
---|
15 | // Test iterator and reversed iterator
|
---|
16 | typedef ublas::matrix<int> matrix_type;
|
---|
17 | typedef ublas::matrix_row_vector<matrix_type> matrix_row_vector_type;
|
---|
18 |
|
---|
19 | matrix_type matrix(0, 3);
|
---|
20 | matrix_row_vector_type row_vector(matrix);
|
---|
21 |
|
---|
22 | std::cout << "Test matrix row vector: " << std::endl;
|
---|
23 |
|
---|
24 | unsigned counter = 0;
|
---|
25 | row_vector.resize(10);
|
---|
26 |
|
---|
27 | for (matrix_row_vector_type::iterator iter = row_vector.begin();
|
---|
28 | iter != row_vector.end();
|
---|
29 | iter++)
|
---|
30 | {
|
---|
31 | for (unsigned i = 0; i < matrix.size2(); i++)
|
---|
32 | {
|
---|
33 | (*iter)[i] = counter++;
|
---|
34 | }
|
---|
35 | }
|
---|
36 |
|
---|
37 | std::cout << "Ascending traversal: " << std::endl;
|
---|
38 | for (matrix_row_vector_type::const_iterator iter = row_vector.begin();
|
---|
39 | iter != row_vector.end();
|
---|
40 | iter++)
|
---|
41 | {
|
---|
42 | std::cout << *iter << " ";
|
---|
43 | }
|
---|
44 | std::cout << std::endl;
|
---|
45 |
|
---|
46 | std::cout << "Full matrix: " << matrix << std::endl;
|
---|
47 |
|
---|
48 | counter = 10;
|
---|
49 | for (matrix_row_vector_type::reverse_iterator iter = row_vector.rbegin();
|
---|
50 | iter != row_vector.rend();
|
---|
51 | iter++)
|
---|
52 | {
|
---|
53 | for (unsigned i = 0; i < matrix.size2(); i++)
|
---|
54 | {
|
---|
55 | (*iter)[i] = counter++;
|
---|
56 | }
|
---|
57 | }
|
---|
58 |
|
---|
59 | std::cout << "Descending traversal: " << std::endl;
|
---|
60 | for (matrix_row_vector_type::const_reverse_iterator iter = row_vector.rbegin();
|
---|
61 | iter != row_vector.rend();
|
---|
62 | iter++)
|
---|
63 | {
|
---|
64 | std::cout << *iter << " ";
|
---|
65 | }
|
---|
66 | std::cout << std::endl;
|
---|
67 |
|
---|
68 | std::cout << "Full matrix: " << matrix << std::endl;
|
---|
69 | }
|
---|
70 |
|
---|
71 |
|
---|
72 |
|
---|
73 | void test_matrix_column_vector()
|
---|
74 | {
|
---|
75 | // Test iterator and reversed iterator
|
---|
76 | typedef ublas::matrix<int> matrix_type;
|
---|
77 | typedef ublas::matrix_column_vector<matrix_type> matrix_column_vector_type;
|
---|
78 |
|
---|
79 | matrix_type matrix(3, 0);
|
---|
80 | matrix_column_vector_type column_vector(matrix);
|
---|
81 |
|
---|
82 | std::cout << "Test matrix column vector: " << std::endl;
|
---|
83 |
|
---|
84 | unsigned counter = 0;
|
---|
85 | column_vector.resize(10);
|
---|
86 |
|
---|
87 | for (matrix_column_vector_type::iterator iter = column_vector.begin();
|
---|
88 | iter != column_vector.end();
|
---|
89 | iter++)
|
---|
90 | {
|
---|
91 | for (unsigned i = 0; i < matrix.size1(); i++)
|
---|
92 | {
|
---|
93 | (*iter)[i] = counter++;
|
---|
94 | }
|
---|
95 | }
|
---|
96 |
|
---|
97 | std::cout << "Ascending traversal: " << std::endl;
|
---|
98 | for (matrix_column_vector_type::const_iterator iter = column_vector.begin();
|
---|
99 | iter != column_vector.end();
|
---|
100 | iter++)
|
---|
101 | {
|
---|
102 | std::cout << *iter << " ";
|
---|
103 | }
|
---|
104 | std::cout << std::endl;
|
---|
105 |
|
---|
106 | std::cout << "Full matrix: " << matrix << std::endl;
|
---|
107 |
|
---|
108 | counter = 10;
|
---|
109 | for (matrix_column_vector_type::reverse_iterator iter = column_vector.rbegin();
|
---|
110 | iter != column_vector.rend();
|
---|
111 | iter++)
|
---|
112 | {
|
---|
113 | for (unsigned i = 0; i < matrix.size1(); i++)
|
---|
114 | {
|
---|
115 | (*iter)[i] = counter++;
|
---|
116 | }
|
---|
117 | }
|
---|
118 |
|
---|
119 | std::cout << "Descending traversal: " << std::endl;
|
---|
120 | for (matrix_column_vector_type::const_reverse_iterator iter = column_vector.rbegin();
|
---|
121 | iter != column_vector.rend();
|
---|
122 | iter++)
|
---|
123 | {
|
---|
124 | std::cout << *iter << " ";
|
---|
125 | }
|
---|
126 | std::cout << std::endl;
|
---|
127 |
|
---|
128 | std::cout << "Full matrix: " << matrix << std::endl;
|
---|
129 | }
|
---|
130 |
|
---|
131 |
|
---|
132 |
|
---|
133 | int main()
|
---|
134 | {
|
---|
135 | test_matrix_row_vector();
|
---|
136 | test_matrix_column_vector();
|
---|
137 |
|
---|
138 | return 0;
|
---|
139 | }
|
---|