00001 #define __cplusplus__ 00002 #ifndef __HDNORMAL__ 00003 #define __HDNORMAL__ 00004 00005 #include<iostream> 00006 #include<istream> 00007 #include<fstream> 00008 #include<string> 00009 #include<vector> 00010 #include<sstream> 00011 #include <cmath> 00012 00013 00014 #include <Spatial_Data.hpp> 00015 #include <Distribution.hpp> 00016 00017 using namespace std; 00018 00019 00027 class HighDim_Normal: public Distribution{ 00028 00030 vector<double> Mu; 00032 uint Dim_red; 00034 double A; 00036 double B; 00038 vector<double> Q; 00039 00040 00041 public : 00043 HighDim_Normal(); 00045 HighDim_Normal(uint dim); 00047 HighDim_Normal(uint dim, uint dim_red, double a, double b); 00049 HighDim_Normal(uint dim, uint dim_red, double a, double b, vector<double> const & mu, vector<double> const & q); 00050 00052 ~HighDim_Normal(); 00053 00055 void DeleteAll(); 00056 00058 void Info(); 00059 00061 uint Get_Dred(); 00062 00064 void Get_Mu(vector<double> &mu); 00065 00067 double Get_A(); 00068 00070 double Get_B(); 00071 00073 void Get_Q(vector<double> &q); 00074 00076 void Get_Qc(vector<double> &qc); 00077 00079 void Set_Mu(vector<double> const & m); 00080 00082 void Set_A(double a); 00083 00085 void Set_B(double b); 00086 00088 void Set_Q(vector<double> const & q); 00089 00091 void Compute_Delta(vector<double> Delta); 00092 00094 void Compute_Sigma(vector<double> Sigma); 00095 00097 void Simulate(vector<double> & X); 00098 00100 void Proj(vector<double> const &X, vector<double> &pX); 00101 00103 double LogDensity(vector<double> const & X); 00104 00106 void Compute_Empirical_Sigma(Spatial_Data *spatd, vector<double> const & freqs, vector<double> &Sigma); 00107 00109 void Estimate_Mu(Spatial_Data *spatd, vector<double> const & freqs); 00110 00112 void Estimate_dabQ(Spatial_Data *spatd, vector<double> const & freqs); 00113 00115 void Estimate(Spatial_Data *spatd, vector<double> const & freqs); 00116 00118 uint Degrees_Of_Freedom(); 00119 00121 void Read_Params(istream & is); 00122 00124 void Write_Params(ostream & os); 00125 00126 }; 00127 00128 00129 #endif