Allink
v0.1
|
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