26 double f, t, t1, t2, sumw=0.0;
28 if(dft==NULL || dft->
frameNr<1)
return 1;
37 for(fi=0; fi<dft->
frameNr; fi++) {
38 dft->
w[fi]=dft->
x2[fi]-dft->
x1[fi];
43 for(fi=0; fi<dft->
frameNr; fi++) dft->
w[fi]/=sumw;
47 for(fi=0; fi<dft->
frameNr; fi++) {
50 for(fi1=fi; fi1>=0; fi1--) {t1=dft->
x[fi1];
if(t1<t)
break;}
52 for(fi2=fi; fi2<dft->
frameNr; fi2++) {t2=dft->
x[fi2];
if(t2>t)
break;}
56 if(t1<t) f+=t-t1;
else f+=t2-t;
57 if(t2>t) f+=t2-t;
else f+=t-t1;
58 f*=0.5;
if(f<=0.0) f=1.0;
61 dft->
w[fi]=f; sumw+=f;
65 for(fi=0; fi<dft->
frameNr; fi++) dft->
w[fi]/=sumw;
95 if(verbose>0) printf(
"imgSetWeights(*img, %d, ...)\n", wmet);
97 if(img==NULL)
return(1);
100 if(wmet<0 || wmet>2)
return(4);
106 if(wmet==0 || wmet==1) img->
isWeight=1;
114 for(fi=0; fi<img->
dimt; fi++) img->
weight[fi]=1.0;
127 for(fi=0, fm=0.0; fi<img->
dimt; fi++) {
128 f=img->
end[fi]-img->
start[fi]; fm+=f;
132 if(fm>0.0) f=(double)img->
dimt/fm;
else f=1.0;
133 for(fi=0; fi<img->
dimt; fi++) img->
weight[fi]*=f;
151 if(tac==NULL || tac->
voiNr<1 || tac->
frameNr<1)
return(0);
154 for(
int i=0; i<tac->
frameNr; i++)
if(tac->
w[i]>0.0) n++;
#define DFT_TIME_STARTEND
void sifModerateTrues(SIF *sif, double limit)
#define IMG_STATUS_OCCUPIED
void sifWeight(SIF *data, double halflife)
Calculate weights for frames in SIF data based on true counts. Weights are normalized to have an aver...
Header file for libtpcmodext.
int sifAllocateWithIMG(SIF *sif, IMG *img, int doCounts, int verbose)
int dftWSampleNr(DFT *tac)
int dftWeightByFreq(DFT *dft)
int imgSetWeights(IMG *img, int wmet, int verbose)