Allink  v0.1
VarDatFile.h
00001 #ifndef VAR_DAT_FILE_H
00002 #define VAR_DAT_FILE_H
00003 #include "../include/Matematica.h"
00004 #define DIS_IF_TYPE(c,t) ( ((c)&(t))==(t) )
00005 #define DIS_ADD_TYPE(c,t) ( (c)|=(t) )
00006 #define DIS_REM_TYPE(c,t) ( (c)&=(~t) )
00007 
00008 enum VisLog{
00010   DIS_NOLOG = 0x001,
00012   DIS_LOGX  = 0x002,
00014   DIS_LOGY  = 0x004,
00016   DIS_LOGLOG= 0x006,
00017 };
00018 
00019 enum RefType{
00021   REF_SEQ  = -1,
00023   REF_ASC  = -2,
00024 };
00026 class VarDatFile:public Matematica{
00027  private:
00029   char XFormula[60];
00031   char YFormula[60];
00033   char Header[STRSIZE];
00035   void Init();
00037   void Allocate();
00039   int NMax;
00041   int NMaxPunti;
00043   int NVar;
00045   double **st;
00047   double *sMin;
00049   double *sMax;
00051   char **sc;
00053   int *SetNMax;
00055   int *sType;
00057   int *sColor;
00059   int *RefAbsc;
00061   double *Punti;
00063   double *PuntiErr;
00065   double *Punti1;
00067   double *dInter;
00069   double *dError;
00071   double *dInter1;
00073   double GlobMax;
00075   double GlobMin;
00077   double xGlobMax;
00079   double xGlobMin;
00081   int IfPuntiAlloc;
00083   int IfPuntiFree;
00085   //int Incr;
00086  public:
00088   VarDatFile(char *file,int NBin);
00090   VarDatFile(int ExtNMax,int ExtNVar,int ExtNBin);
00092   VarDatFile(double **ExtSt,int ExtNMax,int ExtNVar,int ExtNBin);
00094   VarDatFile(char **FileList,int *Pos,int NFile,int Values);
00096   ~VarDatFile();
00098   int Aggiungi(char *file);
00100   int FileInfo(FILE *InFIle,int *NCol);
00102   int ReadLine(char *cLine,double *Value);
00104   int  ReadLine(FILE *InFile, const char *Format, ...);
00106   int ElabSegnale(int NElMin,int NElMax);
00108   MOMENTI DistrSegnale(int NElMin,int NElMax,int IfNorm);
00110   MOMENTI DistrLogSegnale(int NElMin,int NElMax,int IfNorm);
00112   MOMENTI DistrExpSegnale(int NElMin,int NElMax,int IfNorm);
00114   MOMENTI DistrSegnale(int NElMin,int NElMax,double *Border,int IfNorm);
00116   MOMENTI DistrSignErr(int NElMin,int NElMax,double *Border,int IfNorm);
00118   MOMENTI DistrGaussSegnale(int ElMin,int ElMax,int IfNorm);
00120   MOMENTI WeightAverageSet(int CoordY,int ElMin, int ElMax);
00122   void DistrSignSample(int ElMin, int ElMax,double **Distr,int NSample,int IfNorm,double *xBound);
00124   int SpettroSegnale(int NElMin,int NElMax);
00126   void SpeLine(int ElMin,int ElMax,int NBin,double *Spe);
00128   int NormalizzaSegnale(int NElMin,int NElMax);
00130   int NormalizzaInter();
00132   bool RadiceSegnale();
00134   int AutocorSegnale(int NElMin,int NElMax);
00136   double SumSegnale(int CoordY,int NElMin,int NElMax);
00138   double IntSegnale();
00140   void SommaSegnali();
00142   void AverageOrdinate(int ElMin, int ElMax,double *Distr,double *xBound);
00144   void Punta(int n);
00146   void Punta(double **ExtSt,int n);
00148   void Punta(double *sp,int n);
00150   void PuntaInt(double *sp);
00152   void DerivataSegnale(){Elab = &Matematica::DerO4;};
00154   void VarieSegnale(){Elab = &Matematica::SquareGradient;};
00156   void ModuloSegnale(){Elab = &Matematica::Modulo;};
00158   double VarieSegnale(int NElMin,int NElMax);
00160   RETTA InterRettSegnale(int CoordY,int NElMin,int NElMax,int LogLog);
00162   RETTA InterExpSegnale(int CoordY,int NElMin,int NElMax,int LogLog);
00164   MOMENTI InterGaussSegnale(int CoordY,int NElMin,int NElMax,int LogLog);
00166   PARABOLA ParabolaSegnale(int CoordY,int NElMin,int NElMax,int LogLog);
00168   int MediaMobSegnale(int);
00170   int WeightHistoSign(int NHisto);
00172   int CorrelaADuePunti(int dist);
00174   void AutosimilaritaSegnale(int);
00176   void CambiaNBin(int);
00179   void CambiaPunti();
00181   void Print();
00183   void Sort();
00185   void ScriviPunti(char *file);
00187   void ScriviFile(char *file,int CoordY,int LogLog,int NVisMin,int NVisMax);
00189   void ScriviTutto(char *file,int LogLog,int NVisMin,int NVisMax);
00191   void RescaleToBulk(char *FName);
00193   void ExportTxvl(char *FName,int NElMin,int NElMax);
00195   void TecPlot(char *FName);
00197   void PuntiAlloc();
00199   void PuntiFree();
00201   int NBin;
00203   int pNVar(){ return NVar;};
00205   int pNMax(){return NMax;};
00207   int pNRow(int CoordY);
00209   void pGlobBorder(double *xMin,double *xMax,double *yMin,double *yMax){
00210     *xMin = xGlobMin;
00211     *xMax = xGlobMax;
00212     *yMin = GlobMin;
00213     *yMax = GlobMax;
00214   };
00216   double Val(int CoordY,int n);
00218   double Abscissa(int CoordY,int n);
00220   double pPunti(int n);
00222   double pPuntiErr(int n);
00224   void pMinMaxGlob(int NVisMin,int NVisMax);
00226   double pMaxGlob(int NVisMin,int NVisMax);//{return GlobMax;};
00228   double pMinGlob(int NVisMin,int NVisMax);//{return GlobMin;};
00230   double pxMinGlob(int NVisMin,int NVisMax);//{return GlobMin;};
00232   double pxMaxGlob(int NVisMin,int NVisMax);//{return GlobMax;};
00234   double pMax(int CoordY,int NVisMin,int NVisMax);//{return sMax[n];};
00236   double pMin(int CoordY,int NVisMin,int NVisMax);//{return sMin[n];};
00238   double pMaxGlobLog(int NVisMin,int NVisMax);//{return GlobMax;};
00240   double pMinGlobLog(int NVisMin,int NVisMax);//{return GlobMin;};
00242   double pMaxLog(int CoordY,int NVisMin,int NVisMax);//{return sMax[n];};
00244   double pMinLog(int CoordY,int NVisMin,int NVisMax);//{return sMin[n];};
00246   double pInter(int n){return dInter[n];};
00248   double pError(int n){return dError[n];};
00250   double pInter1(int n){return dInter1[n];};
00252   double PuntiMin();
00254   double PuntiMax();
00256   int IsAbscissa(int Col){
00257     if(RefAbsc[Col] == Col) return 1; return 0;};
00259   int pRefAbsc(int Col){return RefAbsc[Col];};
00261   int pSetNMax(int Col){return SetNMax[Col];};
00263   int IsSequence(int Col){return RefAbsc[Col]==REF_SEQ?1:0;};
00265   void ImpSequence(int Col);
00267   void ImpSequence();
00269   void ImpCoordX(int vAbs);
00271   void ImpCoordX(int vSet,int vAbs);
00273   void ImpCoordY(int Ext);
00275   void setXFormula(char *str);
00277   void setYFormula(char *str);
00279   void Reverse();
00281   int Smooth(double Fact,int CoordY,int NVisMin,int NVisMax);
00283   void SmoothGauss(double Fact,int CoordY,int NVisMin,int NVisMax);
00285   void DoubleDistFluct();
00287   void WriteFormula(char *Exit);
00289   char *PrintHeader();
00291   double *sp;
00292 };
00293 #endif //VARELEMENTIGRAFICI_H