📄 objects0.h
字号:
//Copyright(c)2004 Alexander Kadyrov
//************** Modi operandi (f) and Objects (o)
// Modus operandi is a procedure, it uses some objects whose indeces are
// listed in u[]
// and computes other objects, their indeces are listed in c[].
// An object can be a number or more complicted object,
// like fft of a trace, inverted ("br") or sorted trace.
// (a "trace" is an one-dimentional array tr)
// A special case of object is a functional ("fnl").
// A set of functionals is the aim of all computations.
// Oblects are just helping intermediate data.
// an index of modus operandi and an index of an object can be in [2..Amount-1] (0 is excluded)
//************** The following text is not stage (ie trace,diam,circ) specific.
int const Amount=100;// index of (f) and (o) < Amount;
//Atributes of Objects:
char *attName[Amount];
unsigned char attIsfnl[Amount];//0=non-scalar object,1=scalar object (can be fnl)
unsigned char attKind[Amount];//0=no info;1=invariant;2=sensitive
unsigned char attGray[Amount];//0=for binary trace only,1=for integer trace, 2=for double trace
unsigned char attBack[Amount];//computing along "br" back (ie reverse) trace:
// case 0 and 1 does not need a special modi operandi:
// 0 - gives the same result as conputing alolng initial trace
// 1 - changing sign
// k>1 in object k - is computed by a separate modus and put in object k
unsigned char attSack[Amount];// computing "minus (signed) back trace"
// case 0 and 1 does not need a special modi operandi:
// 0 - gives the same result as initial trace
// 1 - changing sign
// k>1 in object k - is computed by a separate modus and put in object k
unsigned char attHasKappa[Amount];//0 - has no Kappa, 1 - has Kappa
double attKappa[Amount];
unsigned char attHasLambda[Amount];//0 - has no Lambda, 1 - has Lambda
double attLambda[Amount];
double attBlank[Amount];//default value of zeros [0,0,..,0] and empty [] trace
unsigned char attIsInteger[Amount];//0=double output,1=integer output for integer trace and dt=1
void attFill(void)//Filling attributes. Each object should be characterised here
{int k;// k must be >1
k=3;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="back (inverse) trace";
//for non-functional these only two atts are needed
// (Really, they are even not needed for computations!)
k=5;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="signed back (inverse) trace";
k=6;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="abs trace";
k=33;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="Radon=integral f(t), also computes sumNeg and sumPos";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=1;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=34;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="t - median index dividing integral abs(f(t))";//out medindex;
attKind[k]=2;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=1;//0=same,1=sign,k>1 in object k
attSack[k]=1;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;
attHasLambda[k]=1;attLambda[k]=0;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output for integer trace and dt=1
k=35;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="min";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0; //0=same,1=sign,k>1 in object k
attSack[k]=39;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=37;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="max";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=41;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=38;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="max abs(f(t))";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=39;//min for sr
k=41;//max for sr;
k=43;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="(average) t-index of max abs(f(t))";
attKind[k]=2;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=1;//0=same,1=sign,k>1 in object k
attSack[k]=1;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;
attHasLambda[k]=1;attLambda[k]=0;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output for integer trace and dt=1
k=44;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="differences 1";
k=45;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="integral of |f'| ";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output
k=46;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="integral of |f'| circular";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output
k=47;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="differences 2";
k=48;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="integral of |f''| ";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=1;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output
k=49;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="integral of |f''| circular";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=1;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output
k=50;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="t - gravity center of abs(f(t))";
attKind[k]=2;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=1;//0=same,1=sign,k>1 in object k
attSack[k]=1;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;
attHasLambda[k]=1;attLambda[k]=0;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output
//--------------------
k=51;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="Lp quasi-norm (p=0.5) = (sumSqR)^2, where sumSqR=integral sqrt(abs(f(t))";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=0;//0=same,1=sign,k>1 in object k
attSack[k]=0;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;//check it later ???
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output for integer trace and dt=1
k=52;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="t median index dividing integral sqrt(abs(f(t)))";
attKind[k]=2;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=1;//0=same,1=sign,k>1 in object k
attSack[k]=1;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=-1;
attHasLambda[k]=1;attLambda[k]=0;
attBlank[k]=0;
attIsInteger[k]=0;//0=double output,1=integer output
k=53;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="Scaled trace";
k=54;
attIsfnl[k]=0;//0=non-scalar; 1=scalar
attName[k]="sorted sctr to the right and left of 34";
k=55;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="MedianW R+: f(x-c); c is median abscissa (34);\n W=1";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=56;//0=same,1=sign,k>1 in object k
attSack[k]=57;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;//check it later ???
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=56;// see Back for the previous k
k=57;// see Sack for the previous k
k=58;
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="MedianW R+: f(t-c); c is median abscissa (34);\n W=abs(f(t))(t-c)";
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=59;//0=same,1=sign,k>1 in object k
attSack[k]=60;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=0;//check it later ???
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output for integer trace and dt=1
k=59;// see Back for the previous k
k=60;// see Sack for the previous k
/*
k=; // fnlG15.m
attIsfnl[k]=1;//0=non-scalar; 1=scalar
attName[k]="MedianW R+: |f(x-c)|; c is median abscissa (34);\n W=sqrt(abs(f(t);"
attKind[k]=1;//0 = no info;1 = invariant; 2 = sensitive
attGray[k]=2;//0=for binary trace only,1=for integer trace, 2=for double trace
attBack[k]=??;//0=same,1=sign,k>1 in object k
attSack[k]=??;//0=same,1=sign,k>1 in object k
attHasKappa[k]=1;attKappa[k]=1;
attHasLambda[k]=1;attLambda[k]=1;
attBlank[k]=0;
attIsInteger[k]=1;//0=double output,1=integer output
k=54; // see k=53;
*/
///////////////////////////////////////////////////////
}//END.
//Output:
double o[Amount],a[Amount];//values of scalar objects
void *po[Amount];//pointers to objects
int lbeg,lend,L;double dlt;//trace label points from,
//"lbeg" to "lend" (inclusive) with a gap "dlt"
// lbeg and lend can be negative
//then L=lend-lbeg+1 : number of used points
int start,fin,span,lstart,lfin;//start and fin are the first and the last non-zero elements of the track
//span=fin-start+1;
//lstart=start+lbeg;lfin=fin+lbeg=start+span-1+lbeg;
int computedby[Amount];//who computes an object? It is Modus which index is in the place of an object
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -