Ticket #7411: test_matrix_vector.cpp

File test_matrix_vector.cpp, 3.5 KB (added by Joaquim Duran Comas <jduran.gm@…>, 9 years ago)
Line 
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
10namespace ublas = boost::numeric::ublas;
11
12
13void 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
73void 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
133int main()
134{
135 test_matrix_row_vector();
136 test_matrix_column_vector();
137
138 return 0;
139}