40 if(verbose>0) printf(
"%s(*dft, %g, %g, first, last)\n", __func__, *startTime, *endTime);
41 if(dft==NULL || startTime==NULL || endTime==NULL)
return(-1);
42 if(!isfinite(*startTime)) *startTime=-1.0;
43 if(!isfinite(*endTime)) *endTime=-1.0;
45 if(dft->
frameNr<=0) {*startTime=*endTime=0.0;
return 0;}
47 if(dft->
timeunit==TUNIT_SEC) {*startTime*=60.; *endTime*=60.;}
49 if(dft->
x[dft->
frameNr-1]<*startTime || dft->
x[0]>*endTime) {
50 *startTime=*endTime=0.0;
return 0;}
52 for(fi=0, *first=dft->
frameNr; fi<dft->frameNr; fi++)
53 if(dft->
x[fi]>=*startTime) {*first=fi;
break;}
54 for(*last=fi=*first; fi<dft->
frameNr; fi++)
55 if(dft->
x[fi]<=*endTime) *last=fi;
else break;
56 if(*first>=dft->
frameNr) {*startTime=*endTime=0.0;
return 0;}
61 dataNr=(*last)-(*first)+1;
63 if(dft->
timeunit==TUNIT_SEC) {*startTime/=60.; *endTime/=60.;}
84 if(verbose>0) printf(
"%s(*img, %g)\n", __func__, *fittime);
85 if(img==NULL || fittime==NULL)
return(-1);
86 if(!isfinite(*fittime)) *fittime=-1.0;
87 if(img->
dimt<=0) {*fittime=0.0;
return 0;}
88 if(*fittime<0) {*fittime=img->
end[img->
dimt-1];
return img->
dimt;}
90 for(
int fi=0; fi<img->
dimt; fi++)
91 if(img->
mid[fi]>*fittime)
break;
else fitdimt++;
92 *fittime=img->
end[fitdimt-1];
94 printf(
" fitdimt := %d\n", fitdimt);
95 printf(
" fittime := %g\n", *fittime);
120 double accepted_timedif=2.2;
122 if(verbose>0) printf(
"%s(*img, *dft)\n", __func__);
123 if(img==NULL || dft==NULL)
return -1;
130 f=0.01*img->
end[img->
dimt-1];
if(accepted_timedif>f) accepted_timedif=f;
131 if(verbose>1) printf(
"accepted_timedif := %g [s]\n", accepted_timedif);
134 if(dft->
timeunit==TUNIT_MIN) ts=60.0;
else ts=1.0;
138 for(
int fi=0; fi<smaller_dimt; fi++) {
140 f=fabs(img->
mid[fi]-dft->
x[fi]*ts);
141 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
142 if(f>accepted_timedif) n++;
146 f=fabs(img->
start[fi]-dft->
x1[fi]*ts);
147 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
148 if(f>accepted_timedif) {n++;
continue;}
151 f=fabs(img->
end[fi]-dft->
x2[fi]*ts);
152 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
153 if(f>accepted_timedif) n++;
156 if(verbose>2) printf(
"nr of different frame times := %d\n", n);
158 if(n==0)
return 1;
else return 0;
178 int fi, n, smaller_frameNr=0;
180 double accepted_timedif=2.2;
182 if(verbose>0) printf(
"%s(*img, *dft)\n", __func__);
183 if(dft1==NULL || dft2==NULL)
return -1;
188 else smaller_frameNr=dft2->
frameNr;
193 if(dft1->
timeunit==TUNIT_MIN) ts1=60.0;
194 if(dft2->
timeunit==TUNIT_MIN) ts2=60.0;
197 printf(
"dft1->timetype := %d\n", dft1->
timetype);
198 printf(
"dft2->timetype := %d\n", dft2->
timetype);
200 printf(
"time range 1 := %g - %g %s\n", dft1->
x[0],
202 printf(
"time range 2 := %g - %g %s\n", dft2->
x[0],
209 if(accepted_timedif>f) accepted_timedif=f;
210 if(verbose>1) printf(
"accepted_timedif := %g [s]\n", accepted_timedif);
213 for(fi=0, n=0; fi<smaller_frameNr; fi++) {
215 f=fabs(dft1->
x[fi]*ts1-dft2->
x[fi]*ts2);
216 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
217 if(verbose>12) printf(
" %g vs %g\n", ts1*dft1->
x[fi], ts2*dft2->
x[fi]);
218 if(f>accepted_timedif) n++;
222 f=fabs(dft1->
x1[fi]*ts1-dft2->
x1[fi]*ts2);
223 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
224 if(verbose>12) printf(
" %g vs %g\n", ts1*dft1->
x1[fi], ts2*dft2->
x1[fi]);
225 if(f>accepted_timedif) {n++;
continue;}
228 f=fabs(dft1->
x2[fi]*ts1-dft2->
x2[fi]*ts2);
229 if(verbose>10) printf(
"timedif[%d] := %g\n", fi, f);
230 if(verbose>12) printf(
" %g vs %g\n", ts1*dft1->
x2[fi], ts2*dft2->
x2[fi]);
231 if(f>accepted_timedif) n++;
234 if(verbose>2) printf(
"nr of different frame times := %d\n", n);
236 if(n==0)
return 1;
else return 0;
257 if(verbose>0) printf(
"%s(*img, *dft)\n", __func__);
258 if(img==NULL || dft==NULL)
return 1;
268 for(
int fi=0; fi<dft->
frameNr; fi++) {
270 dft->
x2[fi]=img->
end[fi];
271 dft->
x[fi]=img->
mid[fi];
295 double last_x=-1.0E+99;
297 if(dft==NULL || dft->
frameNr<1 || ri<0 || ri>=dft->
voiNr)
return 0;
298 for(fi=n=0; fi<dft->
frameNr; fi++) {
299 if(isnan(dft->
x[fi]))
continue;
300 if(isnan(dft->
voi[ri].
y[fi]))
continue;
301 if(dft->
x[fi]<0.0)
continue;
302 if(dft->
isweight!=0 && dft->
w[fi]<=0.0)
continue;
303 if(dft->
x[fi]==last_x)
continue;
304 n++; last_x=dft->
x[fi];
319 if(dft==NULL || dft->
frameNr<1)
return(0.0);
320 for(
int fi=dft->
frameNr-1; fi>=0; fi--) {
322 if(!isnan(dft->
x[fi]))
return(dft->
x[fi]);
324 if(!isnan(dft->
x2[fi]))
return(dft->
x2[fi]);
326 if(!isnan(dft->
x[fi]))
return(dft->
x[fi]);
328 if(!isnan(dft->
x[fi]))
return(dft->
x[fi]);
343 if(img==NULL || img->
dimt<1)
return(0.0);
344 for(
int fi=img->
dimt-1; fi>=0; fi--)
345 if(!isnan(img->
end[fi]))
return(img->
end[fi]);
368 if(verbose>0) printf(
"%s()\n", __func__);
369 if(dft1==NULL || dft2==NULL)
return(-1);
371 if(tunit2!=NULL) *tunit2=dft2->
timeunit;
374 if(verbose>0) printf(
" unknown time units in dft1\n");
378 if(verbose>0) printf(
" unknown time units in dft2\n");
383 if(verbose>1) printf(
" time units are the same in dft1 and dft2.\n");
387 if(verbose>1) printf(
" time units in dft2 converted from %s to %s\n",
391 if(verbose>0) printf(
" time unit conversion failed\n");
void dftSec2min(DFT *dft)
int dftTimeunitConversion(DFT *dft, int tunit)
void dftMin2sec(DFT *dft)
int fittime_from_dft(DFT *dft, double *startTime, double *endTime, int *first, int *last, int verbose)
int copy_times_from_img_to_dft(IMG *img, DFT *dft, int verbose)
double imgEndtime(IMG *img)
int fittime_from_img(IMG *img, double *fittime, int verbose)
int check_times_dft_vs_img(IMG *img, DFT *dft, int verbose)
int getActualSamplenr(DFT *dft, int ri)
double dftEndtime(DFT *dft)
int dftMatchTimeunits(DFT *dft1, DFT *dft2, int *tunit2, int verbose)
int check_times_dft_vs_dft(DFT *dft1, DFT *dft2, int verbose)
#define DFT_TIME_STARTEND
char * petTunit(int tunit)
Header file for libtpcmodext.