00001 #define __cplusplus__ 00002 #ifndef __HDNORMMRF__ 00003 #define __HDNORMMRF__ 00004 00005 #include<iostream> 00006 #include<istream> 00007 #include<fstream> 00008 #include<string> 00009 #include<vector> 00010 #include<sstream> 00011 #include <cmath> 00012 00013 #include <HMRF.hpp> 00014 #include <Spatial_Data.hpp> 00015 #include <HighDim_Normal.hpp> 00016 00017 using namespace std; 00018 00019 00028 class HighDim_Normal_MRF : public HMRF{ 00029 00030 vector<HighDim_Normal *> Gaussians; 00031 00032 00033 00034 public : 00035 00036 00038 HighDim_Normal_MRF(); 00040 HighDim_Normal_MRF(Neighborhood_System *nhs ); 00042 HighDim_Normal_MRF(uint k, uint dim, Neighborhood_System *nhs ); 00044 HighDim_Normal_MRF(MRF *rf , vector<HighDim_Normal *> const & gaussians); 00046 ~HighDim_Normal_MRF(); 00047 00049 void DeleteAll(); 00050 00051 00053 uint Get_D(); 00054 00056 void Simulate(Data *dat, uint gibbs_sampler_nbiter); 00057 00059 void Simulate(Data *dat, double grad_tol); 00060 00062 uint Degrees_Of_Freedom(); 00063 00065 double Density(vector<double> const & X, uint k); 00066 00067 00069 void Update_Gaussians(Spatial_Data *spatd, vector<double> const & tik); 00070 00071 // I/O Functions 00073 void ReadFromFile(string filename); 00075 void WriteToFile(string filename); 00076 00078 void Info(); 00079 00081 void NREM_E(Spatial_Data *spatd, vector<double> & tik); 00083 void NREM_M(Spatial_Data *spatd, vector<double> const & tik); 00084 00085 00086 }; 00087 00088 00089 #endif