Main Page   Compound List   File List   Compound Members   File Members   Related Pages  

DynaClass.hh

Go to the documentation of this file.
00001 
00003 #include <iostream>
00004 #include <fstream>
00005 #include <string>  
00006 #include <vector>
00007 
00008 #include <cstdio>
00009 #include <cstdlib>
00010 #include <cmath>
00011 #include <cassert>
00013 class DynaClass 
00014 {
00015   public:
00016         
00017         // Attributes
00020         vector<int> *AssignedTimelessClass;
00022         vector<float>  *DivergenceValue;
00024         vector<float*> *Centroids;
00026         vector<float**> *Covariances;
00028         vector<unsigned long int> *Weight;
00030         vector<float*> *MTCentroids;
00032         vector<float**> *MTCovariances;
00035         vector<unsigned long int> *MTWeight;
00036         
00037         //Joint Distribution for 2 consecutive times;
00041         vector<float*> *JointCentroids;
00045         vector<float**> *JointCovariances;
00050         vector<unsigned long int> *JointWeight;
00052         float *MutualInfo;
00053         
00054         //trajectory attributes between 2 consecutive times
00056         float ***flow;
00058         float ***div;
00059         
00060         // Operations
00061         DynaClass(){}
00062         virtual~DynaClass(){}
00068         void Allocate(int size, int nb_bands)
00069         {
00070         
00071                 int k,j;
00072                 nb_TemporalSample=size;
00073                 nb_dim=nb_bands;
00074                 AssignedTimelessClass=new vector<int>[nb_TemporalSample];
00075                 Weight=new vector<unsigned long int>[nb_TemporalSample];
00076                 DivergenceValue=new vector<float>[nb_TemporalSample];
00077                 Centroids=new vector<float*>[nb_TemporalSample];
00078                 Covariances=new vector<float**>[nb_TemporalSample];
00079                 
00080                 MTWeight=new vector<unsigned long int>[nb_TemporalSample];
00081                 MTCentroids=new vector<float*>[nb_TemporalSample];
00082                 MTCovariances=new vector<float**>[nb_TemporalSample];
00083                 
00084                 JointCentroids=new vector<float*>[nb_TemporalSample-1];
00085                 JointCovariances=new vector<float**>[nb_TemporalSample-1];
00086                 JointWeight=new vector<unsigned long int>[nb_TemporalSample-1];
00087                 
00088                 int *AuxAssignedTimelessClass=new int[nb_TemporalSample];
00089                 unsigned long int *AuxWeight=new unsigned long int[nb_TemporalSample];
00090                 float  *AuxDivergenceValue=new float[nb_TemporalSample];
00091                 float  **AuxCentroids=new float*[nb_TemporalSample];
00092                 float ***AuxCovariances=new float**[nb_TemporalSample];
00093                 unsigned long int *AuxMTWeight=new unsigned long int[nb_TemporalSample];
00094                 float  **AuxMTCentroids=new float*[nb_TemporalSample];
00095                 float ***AuxMTCovariances=new float**[nb_TemporalSample];
00096                 float  **AuxJointCentroids=new float*[nb_TemporalSample-1];
00097                 float ***AuxJointCovariances=new float**[nb_TemporalSample-1];
00098                 unsigned long int  *AuxJointWeight=new unsigned long int[nb_TemporalSample-1];
00099         
00100         
00101                 for (k=0;k<nb_TemporalSample;k++)
00102                 {
00103                         AuxCentroids[k]=new float[nb_dim];
00104                         AuxCovariances[k]=new float*[ nb_dim];
00105                         AuxMTCentroids[k]=new float[nb_dim];
00106                         AuxMTCovariances[k]=new float*[ nb_dim];
00107                         for (j=0;j<nb_dim;j++)
00108                         {
00109                                 AuxCovariances[k][j]=new float[nb_dim];
00110                                 AuxMTCovariances[k][j]=new float[nb_dim];
00111                         }
00112                         if (k<nb_TemporalSample-1){
00113                                 AuxJointCentroids[k]=new float[nb_dim*2];
00114                                 AuxJointCovariances[k]=new float*[nb_dim*2];
00115                                 for (j=0;j<nb_dim*2;j++){
00116                                         AuxJointCovariances[k][j]=new float[nb_dim*2];
00117                                 }
00118                                 JointCentroids[k].push_back(AuxJointCentroids[k]);
00119                                 JointCovariances[k].push_back(AuxJointCovariances[k]);
00120                                 JointWeight[k].push_back(AuxJointWeight[k]);
00121                         }
00122                         Weight[k].push_back(AuxWeight[k]);
00123                         AssignedTimelessClass[k].push_back(AuxAssignedTimelessClass[k]);
00124                         DivergenceValue[k].push_back(AuxDivergenceValue[k]);
00125                         Centroids[k].push_back(AuxCentroids[k]);
00126                         Covariances[k].push_back(AuxCovariances[k]);
00127                         MTWeight[k].push_back(AuxMTWeight[k]);
00128                         MTCentroids[k].push_back(AuxMTCentroids[k]);
00129                         MTCovariances[k].push_back(AuxMTCovariances[k]);
00130                         
00131                 }
00132                 for (k=0;k<nb_TemporalSample;k++){AssignedTimelessClass[k][0]=-1;}
00133                 MutualInfo=new float[nb_TemporalSample-1];
00134                 for (k=0;k<nb_TemporalSample-1;k++){MutualInfo[k]=-1;}
00135         }
00139         void InitRead(int size, int nb_bands){
00140         
00141                 nb_TemporalSample=size;
00142                 nb_dim=nb_bands;
00143                 AssignedTimelessClass=new vector<int>[nb_TemporalSample];
00144                 Weight=new vector<unsigned long int>[nb_TemporalSample];
00145                 DivergenceValue=new vector<float>[nb_TemporalSample];
00146                 Centroids=new vector<float*>[nb_TemporalSample];
00147                 Covariances=new vector<float**>[nb_TemporalSample];
00148                 
00149                 MTWeight=new vector<unsigned long int>[nb_TemporalSample];
00150                 MTCentroids=new vector<float*>[nb_TemporalSample];
00151                 MTCovariances=new vector<float**>[nb_TemporalSample];
00152                                                 
00153                 MutualInfo=new float[nb_TemporalSample-1];
00154                 flow= new float**[nb_TemporalSample];
00155                 div= new float**[nb_TemporalSample];
00156         }
00159         void MTAlloc(int t){
00160                            
00161                 float  *AuxMTCentroids=new float[nb_dim];
00162                 float **AuxMTCovariances=new float*[nb_dim];
00163                 for (int j=0;j<nb_dim;j++){ AuxMTCovariances[j]=new float[nb_dim];}
00164                 unsigned long int  *AuxMTWeight=new unsigned long int[1];
00165         
00166                 MTCentroids[t].push_back(AuxMTCentroids);
00167                 MTCovariances[t].push_back(AuxMTCovariances);
00168                 MTWeight[t].push_back(AuxMTWeight[0]);
00169 
00170         
00171         }
00177         void TLAlloc(int t, int length){
00178         
00179             for (int k=0;k<length;k++){
00180                 
00181                 unsigned long int *AuxWeight=new unsigned long int[1];
00182                 int *AuxAssignedTimelessClass=new int[1];
00183                 float *AuxDivergenceValue=new float[1];    
00184                 float *AuxCentroids=new float[nb_dim];
00185                 float **AuxCovariances=new float*[ nb_dim];
00186                 for (int j=0;j<nb_dim;j++)
00187                 {
00188                         AuxCovariances[j]=new float[nb_dim];
00189                         AuxCovariances[j]=new float[nb_dim];
00190                 }                       
00191                 Weight[t].push_back(AuxWeight[0]);
00192                 AssignedTimelessClass[t].push_back(AuxAssignedTimelessClass[0]);
00193                 DivergenceValue[t].push_back(AuxDivergenceValue[0]);
00194                 Centroids[t].push_back(AuxCentroids);
00195                 Covariances[t].push_back(AuxCovariances);
00196             }
00197         }
00203         void TLAlloc2(int t, int length){
00204         
00205             for (int k=0;k<length;k++){
00206                 
00207                 unsigned long int *AuxWeight=new unsigned long int[1];
00208                 int *AuxAssignedTimelessClass=new int[1];
00209                 float *AuxDivergenceValue=new float[1];    
00210                 Weight[t].push_back(AuxWeight[0]);
00211                 AssignedTimelessClass[t].push_back(AuxAssignedTimelessClass[0]);
00212                 DivergenceValue[t].push_back(AuxDivergenceValue[0]);
00213             }
00214         }
00220         void TLAllocCenterCov(int t, int length){
00221         
00222             for (int k=0;k<length;k++){
00223                                    
00224                 float *AuxCentroids=new float[nb_dim];
00225                 float **AuxCovariances=new float*[ nb_dim];
00226                 for (int j=0;j<nb_dim;j++)
00227                 {
00228                         AuxCovariances[j]=new float[nb_dim];
00229                         AuxCovariances[j]=new float[nb_dim];
00230                 }                       
00231                 Centroids[t].push_back(AuxCentroids);
00232                 Covariances[t].push_back(AuxCovariances);
00233             }
00234         }
00235         
00242         void flowDivAlloc(int t, int length1, int length2){
00243    
00244                 flow[t]=new float*[length1];div[t]=new float*[length1];
00245                 for (int k=0;k<length1;k++){flow[t][k]=new float[length2];div[t][k]=new float[length2];}
00246         }
00247         
00248         
00249   private:
00250 
00252         int nb_TemporalSample;
00254         int nb_dim;
00255 };

Generated on Thu Feb 17 11:01:55 2005 for Inference of a Graph of Dynamic Cluster Trajectories by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002