23 #ifndef CPPR_STATS_H //make sure this only gets included once
38 template <
typename T >
42 unsigned int rows = data.size1();
43 unsigned int cols = data.size2();
44 ublas::vector<T> means(rows);
46 for(
unsigned int i=0; i<rows; i++)
48 ublas::matrix_row<ublas::matrix<T> > mr (data, i);
61 template <
typename T >
65 int rows = data.size1();
66 int cols = data.size2();
67 ublas::vector<T> means(cols);
69 for(
int i=0; i<cols; i++)
71 ublas::matrix_column<ublas::matrix<T> > mc (data, i);
85 template <
typename T >
89 int rows = data.size1();
90 ublas::vector<T> sums(rows);
92 for(
int i=0; i<rows; i++)
94 ublas::matrix_row<ublas::matrix<T> > mc (data, i);
106 template <
typename T >
110 int cols = data.size2();
111 ublas::vector<T> sums(cols);
113 for(
int i=0; i<cols; i++)
115 ublas::matrix_column<ublas::matrix<T> > mc (data, i);
129 template <
typename T >
130 ublas::matrix<T>
t(
const ublas::matrix<T> &m) {
return trans(m); };
138 template <
typename T >
139 int ncol(
const ublas::matrix<T> &m) {
return m.size2(); };
147 template <
typename T >
148 int nrow(
const ublas::matrix<T> &m) {
return m.size1(); };
161 template <
typename T >
175 template <
typename T >
176 ublas::vector<T>
unique(
const ublas::vector<T> &v)
178 ublas::vector<T> ret = v;
179 typename ublas::vector<T>::iterator it;
181 std::sort(ret.begin(), ret.end());
183 ret.resize(it - ret.begin());
196 template <
typename T >
197 int count(
const T &value,
const ublas::vector<T> &v)
200 for(
unsigned int i=0; i<v.size(); i++)
213 template <
typename T >
214 ublas::matrix<T>
square(
const ublas::matrix<T> &m)
216 ublas::matrix<T> s = m;
217 for(
unsigned int row=0; row<m.size1(); row++)
218 for(
unsigned int col=0; col<m.size2(); col++)
219 s(row,col)*=m(row,col);
230 template <
typename T >
231 T
sum(
const ublas::vector<T> & v)
234 for(
unsigned int i=0;i<v.size();i++)
245 template <
typename T >
246 T
sum(
const ublas::matrix<T> & m)
249 for(
unsigned int row=0; row<m.size1(); row++)
250 for(
unsigned int col=0; col<m.size2(); col++)
262 template <
typename T >
263 ublas::vector<T>
vsqrt(
const ublas::vector<T> & v1)
265 ublas::vector<T> roots(v1.size());
266 for(
unsigned int i=0;i<v1.size();i++)
268 double m =
static_cast<double>(v1[i]);
269 roots[i] =
static_cast<T
>(sqrt(m));
280 template <
typename T >
281 T
min(
const ublas::matrix<T> & m)
284 for(
unsigned int row=0; row<m.size1(); row++)
285 for(
unsigned int col=0; col<m.size2(); col++)
297 template <
typename T >
298 T
min(
const ublas::vector<T> & v)
301 for(
unsigned int row=1; row<v.size(); row++)
313 template <
typename T >
314 T
max(
const ublas::matrix<T> & m)
317 for(
unsigned int row=0; row<m.size1(); row++)
318 for(
unsigned int col=0; col<m.size2(); col++)
330 template <
typename T >
331 T
max(
const ublas::vector<T> & v)
334 for(
unsigned int row=1; row<v.size(); row++)
346 template <
typename T >
350 for(
unsigned int i=0; i<v.size(); i++)
362 template <
typename T >
366 for(
unsigned int i=0; i<v.size(); i++)
377 template <
typename T >
378 T
mean(
const ublas::vector<T> & v)
391 template <
typename T >
392 T
mean(
const ublas::matrix<T> & m)
395 mean/=m.size1() * m.size2();
407 template <
typename T >
409 var(
const ublas::vector<T> & v,
double m)
413 for(
unsigned int i=0; i<v.size(); i++)
415 sum+=(v[i]-m) * (v[i]-m);
426 template <
typename T >
428 var(
const ublas::vector<T> & v)
439 template <
typename T >
440 double sd(
const ublas::vector<T> & v)
450 template <
typename T >
451 ublas::vector<double>
sd(
const ublas::matrix<T> & m)
453 ublas::vector<double> ret(
ncol(m));
454 for(
unsigned int i=0;i<
ncol(m);i++)
456 ublas::vector<double> temp = column(m,i);