Skip to content
Snippets Groups Projects
Commit e819028f authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Merge branch 'refactor/new_arch_armem' into 'master'

Refactor/new arch armem

See merge request ArmarX/RobotAPI!198
parents e31338cb c080328a
No related branches found
No related tags found
1 merge request!198Refactor/new arch armem
/*
* Gaussians.h
*
* Created on: Nov 19, 2011
* Author: Seungsu KIM
*/
#ifndef __GAUSSIANSM_H__
#define __GAUSSIANSM_H__
#include "MathLib.h"
#define GAUSSIAN_MAXIMUM_NUMBER 50
struct GMMState
{
::MathLib::Vector Mu;
::MathLib::Matrix Sigma;
double Prio;
};
struct GMMStateP
{
MathLib::Vector MuI;
MathLib::Matrix SigmaII;
MathLib::Matrix SigmaIIInv;
double detSigmaII;
// for GMR
MathLib::Vector muO;
MathLib::Matrix SigmaIO;
MathLib::Matrix SigmaIOInv;
};
struct GMMs
{
unsigned int nbStates;
unsigned int nbDim;
GMMState States[GAUSSIAN_MAXIMUM_NUMBER];
};
class Gaussians
{
private:
GMMStateP gmmpinv[GAUSSIAN_MAXIMUM_NUMBER];
public:
GMMs model;
Gaussians(const char* f_mu, const char* f_sigma, const char* f_prio);
Gaussians(int nbStates, int nbDim, const char* f_mu, const char* f_sigma, const char* f_prio);
Gaussians(const int nbStates, const int nbDim, const vector<double> pri_vec, const vector<double> mu_vec, const vector<double> sig_vec);
Gaussians(GMMs* model);
void setGMMs(GMMs* model);
// For fast computation of GaussianPDF
MathLib::Vector gfDiff, gfDiffp;
MathLib::Vector gDer;
MathLib::Vector gPdf;
int nbDimI;
void InitFastGaussians(int first_inindex, int last_inindex);
double GaussianPDFFast(int state, MathLib::Vector x);
double GaussianProbFast(MathLib::Vector x);
MathLib::Vector GaussianDerProbFast(MathLib::Vector x);
void InitFastGMR(int first_inindex, int last_inindex, int first_outindex, int last_outindex);
void Regression(const MathLib::Vector& indata, MathLib::Vector& outdata, MathLib::Matrix& derGMR);
void Regression(const MathLib::Vector& indata, MathLib::Vector& outdata);
MathLib::Vector Regression(const MathLib::Vector& indata);
};
/*
void GaussianMux(GMMs *modelK, GMMs *modelL, GMMs *modelOut);
void GaussianRotate(GMMs *model, Vector P, Matrix R, GMMs *modelOut);
*/
#endif //__GAUSSIANS_H__
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment