source: trunk/test/matrix_lookup_test.cc @ 1170

Last change on this file since 1170 was 1170, checked in by Peter, 14 years ago

removing DataLookup2D closes ticket:243

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1// $Id: matrix_lookup_test.cc 1170 2008-02-27 00:06:55Z peter $
2
3/*
4  Copyright (C) 2006 Jari Häkkinen, Peter Johansson
5
6  This file is part of the yat library, http://trac.thep.lu.se/yat
7
8  The yat library is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2 of the
11  License, or (at your option) any later version.
12
13  The yat library is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21  02111-1307, USA.
22*/
23
24#include "yat/utility/Matrix.h"
25#include "yat/classifier/MatrixLookup.h"
26
27#include <fstream>
28#include <iostream>
29#include <vector>
30
31using namespace theplu::yat;
32
33utility::Matrix matrix(size_t n);
34
35int main(const int argc,const char* argv[])
36{
37  using namespace theplu::yat::classifier;
38
39  std::ostream* error;
40  if (argc>1 && argv[1]==std::string("-v"))
41    error = &std::cerr;
42  else {
43    error = new std::ofstream("/dev/null");
44    if (argc>1)
45      std::cout << "lookup_test -v : for printing extra information\n";
46  }
47  bool ok = true;
48
49  *error << "\nTesting MatrixLookup" << std::endl;
50  *error << "MatrixLookup::MatrixLookup(const utility::Matrix& data)...";
51  utility::Matrix gsl_m1(matrix(2));
52  classifier::MatrixLookup m1(gsl_m1);
53  if (m1.rows()!=gsl_m1.rows() || m1.columns()!=gsl_m1.columns() || 
54      m1(0,0)!=gsl_m1(0,0) || m1(0,1)!=gsl_m1(0,1) || 
55      m1(1,0)!=gsl_m1(1,0) || m1(1,1)!=gsl_m1(1,1) ) {
56    ok =false;
57    *error <<   "ERROR:" << std::endl;
58  }
59  else 
60    *error << "Ok" << std::endl;
61
62 
63  *error << "MatrixLookup::MatrixLookup(const utility::Matrix&,\n" 
64         << "                           const std::vector<size_t>&,\n"
65         << "                           const std::vector<size_t>&)...";
66  utility::Matrix gsl_m2(matrix(4));
67  std::vector<size_t> index_odd;
68  index_odd.push_back(1);
69  index_odd.push_back(3);
70  std::vector<size_t> index_even;
71  index_even.push_back(2);
72  index_even.push_back(0);
73 
74  classifier::MatrixLookup m2(gsl_m2,utility::Index(index_odd), 
75                              utility::Index(index_even));
76  if (m2.rows()!=2 || m2.columns()!=2 || 
77      m2(0,0)!=gsl_m2(1,2) || m2(0,1)!=gsl_m2(1,0) || 
78      m2(1,0)!=gsl_m2(3,2) || m2(1,1)!=gsl_m2(3,0) ) {
79    ok =false;
80    *error <<   "ERROR:" << std::endl;
81    *error << "rows: " << m2.rows() << " expected 2\n"
82           << "columns: " << m2.columns() << " expected 2\n"
83           << "(0,0): " << m2(0,0) << " expected " << gsl_m2(1,2) << "\n"
84           << "(0,1): " << m2(1,0) << " expected " << gsl_m2(1,0) << "\n"
85           << "(1,0): " << m2(0,1) << " expected " << gsl_m2(3,2) << "\n"
86           << "(0,0): " << m2(0,0) << " expected " << gsl_m2(3,0) << "\n";
87  }
88  else
89    *error << "Ok" << std::endl;
90
91  *error << "MatrixLookup::MatrixLookup(const utility::Matrix&,\n" 
92         << "                           const std::vector<size_t>&,\n"
93         << "                           const bool)...";
94  std::vector<size_t> one(1,1);
95  classifier::MatrixLookup m3(gsl_m2,utility::Index(one),true);
96  if (m3.rows()!=1 || m3.columns()!=gsl_m2.columns() || m3(0,0)!=gsl_m2(1,0) || 
97      m3(0,1)!=gsl_m2(1,1) || m3(0,2)!=gsl_m2(1,2) || m3(0,3)!=gsl_m2(1,3)) {
98    ok =false;
99    *error <<   "ERROR:" << std::endl;
100    *error << "m3.rows(): " << m3.rows() << " expected 1" << std::endl; 
101    *error << "m3.columns(): " << m3.columns() << " expected " 
102           << gsl_m2.columns() << std::endl; 
103  }
104  else
105    *error << "Ok" << std::endl;
106
107  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&)...";
108  classifier::MatrixLookup m4(m2);
109  if (m4.rows()!=m2.rows() || m4.columns()!=m2.rows() || m4(0,0)!=m2(0,0) || 
110      m4(0,1)!=m2(0,1) || m4(1,0)!=m2(1,0) || m4(1,1)!=m2(1,1) ) {
111    ok =false;
112    *error <<   "ERROR:" << std::endl;
113  }
114  else
115    *error << "Ok" << std::endl;
116
117  *error << "MatrixLookup::MatrixLookup(const MatrixLookup& data\n" 
118         << "                           const std::vector<size_t>&,\n"
119         << "                           const std::vector<size_t>&)...";
120  classifier::MatrixLookup m5(m2,utility::Index(one),utility::Index(one));
121  if (m5.rows()!=1 || m5.columns()!=1 || m5(0,0)!=m2(1,1) ) {
122    ok =false;
123    *error <<   "ERROR:" << std::endl;
124    *error << "MatrixLookup is " << m5(0,0) << " expected " << m2(1,1)
125           << std::endl;
126  }
127  else
128    *error << "Ok" << std::endl;
129 
130  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&,\n" 
131         << "                           const std::vector<size_t>&,\n"
132         << "                           const bool)...";
133  classifier::MatrixLookup m6(m2,utility::Index(one),true);
134  if (m6.rows()!=1 || m6.columns()!=m2.columns() || m6(0,0)!=m2(1,0) || 
135      m6(0,1)!=m2(1,1)) {
136    ok =false;
137    *error << "ERROR:" << std::endl;
138  }
139  else
140    *error << "Ok" << std::endl;
141
142  *error << "MatrixLookup::MatrixLookup(const size_t,const size_t,\n"
143         << "                           const double)...";
144  classifier::MatrixLookup m7(103,112,12);
145  if (m7.rows()!=103 || m7.columns()!=112 || m7(0,0)!=12) {
146    ok =false;
147    *error << "ERROR:" << std::endl;
148  }
149  else
150    *error << "Ok" << std::endl;
151
152
153  *error << "MatrixLookup::training_data(const std::vector<size_t>)...";
154  const classifier::MatrixLookup* TrnData =
155    new MatrixLookup(m2, utility::Index(one), false);
156  if (TrnData->rows() != m2.rows() || TrnData->columns()!=one.size()){
157    ok =false;
158    *error << "ERROR:" << std::endl;
159  }
160  else
161    *error << "Ok" << std::endl;
162  delete TrnData;
163
164  *error << "MatrixLookup::validation_data(const std::vector<size_t>,\n"
165         << "                              const std::vector<size_t>)...";
166  std::vector<size_t> val(23,2);
167  const classifier::MatrixLookup* ValData = 
168    new MatrixLookup(m2, utility::Index(val), false);
169  if (ValData->rows() != m2.rows() || TrnData->columns()!=val.size()){
170    ok =false;
171    *error << "ERROR:" << std::endl;
172  }
173  else
174    *error << "Ok" << std::endl;
175  delete ValData;
176
177  if (ok)
178    *error << "Test Ok." << std::endl;
179  if (error!=&std::cerr)
180    delete error;
181  return (ok ? 0 : -1);
182}
183
184utility::Matrix matrix(size_t n)
185{
186  utility::Matrix res(n,n);
187  for (size_t i=0;i<n;i++)
188    for (size_t j=0;j<n;j++)
189      res(i,j)=10*i+j;
190  return res;
191}
192
193
Note: See TracBrowser for help on using the repository browser.