/* -*- mode: c++ -*-
*/
/*
GIFT, a flexible content based image retrieval system.
Copyright (C) 1998, 1999, 2000 CUI, University of Geneva
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// -*- mode: c++ -*-
#ifndef _CMATRIX
#define _CMATRIX
#include <assert.h>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <functional>
/** a simple and fast matrix class */
class CMatrix:public vector<vector<float> >{
protected:
/** the size of this matrix */
int mSize;
public:
/** constructor */
CMatrix(int inSize,float inDiagonal=1);
/** get the diagonal of this */
void getDiagonal(vector<float>& outDiagonal)const;
/** the sum of off diagonal objects */
float getOffDiagonalSum()const;
/**
putting the lower triangle into the upper
*/
void symmetrify();
/**
transpose the matrix:
this is useful for having the eigenvectors in the lines of
the matrix
*/
void transpose();
/** this function is interesting for what we want to do with this
matrix later. We move simply all elements one up, one left.
Instead of the elements which were on the righter-lower rim we
put zeros */
void moveLeftUp();
};
/** Output a vector: Simply a space separated sequence of numbers */
ostream& operator<<(ostream& outStream,
const vector<float>& inVector);
/** Output a matrix: Simply output a vector per line */
ostream& operator<<(ostream& outStream,
const CMatrix& inMatrix);
#endif
Documentation generated by muellerw@pc7170 on Fre Sep 29 14:43:08 CEST 2000