Doxygen Source Code Documentation
plug_lsqfit.c File Reference
#include "afni.h"#include "parser.h"Go to the source code of this file.
Defines | |
| #define | NBASE 3 |
| #define | NRMAX_SIN 2 |
| #define | NRMAX_TS 2 |
| #define | HARM_MAX 22 |
| #define | NALPHA 26 |
| #define | VSIZE 64 |
Functions | |
| char * | LSQ_main (PLUGIN_interface *) |
| void | LSQ_fitter (int nt, double to, double dt, float *vec, char **label) |
| void | LSQ_detrend (int nt, double to, double dt, float *vec, char **label) |
| void | LSQ_worker (int nt, double dt, float *vec, int dofit, char **label) |
| PLUGIN_interface * | TSGEN_init (void) |
| char * | TSGEN_main (PLUGIN_interface *) |
| PLUGIN_interface * | EXP0D_init (void) |
| char * | EXP0D_main (PLUGIN_interface *) |
| void | EXP0D_worker (int num, float *vec) |
| DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
| void | EXP0D_func_init (void) |
Variables | |
| char | helpstring [] |
| char | plehstring [] |
| char * | baseline_strings [NBASE] = { "Constant" , "Linear" , "Quadratic" } |
| PLUGIN_interface * | global_plint = NULL |
| int | polort = 1 |
| int | ignore = 3 |
| int | nrsin = 0 |
| int | nrts = 0 |
| int | initialize = 1 |
| float | sinper [NRMAX_SIN] |
| int | sinharm [NRMAX_SIN] |
| MRI_IMAGE * | tsim [NRMAX_TS] |
| char | lbuf [4096] |
| char | sbuf [256] |
| char | fredstring [] |
| char * | vstring [NALPHA] |
| int | exp0d_var = 23 |
| PARSER_code * | exp0d_pc = NULL |
| PLUGIN_interface * | plint_EXP0D = NULL |
Define Documentation
|
|
Definition at line 81 of file plug_lsqfit.c. Referenced by PLUGIN_init(), and TSGEN_init(). |
|
|
Definition at line 587 of file plug_lsqfit.c. Referenced by EXP0D_init(), and EXP0D_main(). |
|
|
Definition at line 51 of file plug_lsqfit.c. Referenced by LSQ_main(), and PLUGIN_init(). |
|
|
Definition at line 79 of file plug_lsqfit.c. Referenced by PLUGIN_init(). |
|
|
Definition at line 80 of file plug_lsqfit.c. Referenced by PLUGIN_init(). |
|
|
Definition at line 652 of file plug_lsqfit.c. Referenced by EXP0D_worker(). |
Function Documentation
|
|
Definition at line 601 of file plug_lsqfit.c. References plint_EXP0D, and PLUG_startup_plugin_CB(). Referenced by EXP0D_init().
00602 {
00603 PLUG_startup_plugin_CB( NULL , (XtPointer)plint_EXP0D , NULL ) ;
00604 }
|
|
|
Definition at line 607 of file plug_lsqfit.c. References AFNI_register_nD_func_init(), EXP0D_func_init(), EXP0D_main(), exp0d_var, EXP0D_worker(), fredstring, generic_func, NALPHA, plint_EXP0D, PLUTO_register_0D_function, and vstring. Referenced by PLUGIN_init().
00608 {
00609 PLUGIN_interface * plint ;
00610
00611 /*---------------- set titles and call point ----------------*/
00612
00613 plint = PLUTO_new_interface( "Expr 0D" ,
00614 "Control the Expr 0D transformation" ,
00615 fredstring ,
00616 PLUGIN_CALL_VIA_MENU , EXP0D_main ) ;
00617
00618 PLUTO_add_option( plint , "Variable" , "Variable" , TRUE ) ;
00619 PLUTO_add_string( plint , NULL , NALPHA,vstring , exp0d_var ) ;
00620
00621 PLUTO_add_option( plint , "Expression" , "Expression" , TRUE ) ;
00622 PLUTO_add_string( plint , NULL , 0,NULL , 50 ) ;
00623
00624 PLUTO_register_0D_function( "Expr 0D" , EXP0D_worker ) ;
00625
00626 plint_EXP0D = plint ;
00627 AFNI_register_nD_func_init( 0 , (generic_func *)EXP0D_func_init ) ; /* 21 Jul 2003 */
00628
00629 return plint ;
00630 }
|
|
|
Definition at line 632 of file plug_lsqfit.c. References exp0d_var, free, NALPHA, PARSER_generate_code(), PLUTO_string_index(), and vstring. Referenced by EXP0D_init().
00633 {
00634 char * str ;
00635
00636 PLUTO_next_option(plint) ;
00637 str = PLUTO_get_string(plint) ;
00638 exp0d_var = PLUTO_string_index( str , NALPHA , vstring ) ;
00639
00640 if( exp0d_pc != NULL ){ free(exp0d_pc) ; exp0d_pc = NULL ; }
00641 PLUTO_next_option(plint) ;
00642 str = PLUTO_get_string(plint) ;
00643 exp0d_pc = PARSER_generate_code( str ) ;
00644
00645 if( exp0d_pc == NULL ) return "*******************************\n"
00646 "Error when compiling expression\n"
00647 "*******************************" ;
00648
00649 return NULL ;
00650 }
|
|
||||||||||||
|
Definition at line 654 of file plug_lsqfit.c. References exp0d_var, malloc, MIN, PARSER_evaluate_vector(), vec, and VSIZE. Referenced by EXP0D_init().
00655 {
00656 int ii , jj , jbot,jtop ;
00657
00658 static int first = 1 ;
00659 static double * atoz[26] ;
00660 static double tvec[VSIZE] ;
00661
00662 if( num <= 0 || vec == NULL || exp0d_pc == NULL ) return ;
00663
00664 #if 0
00665 fprintf(stderr,"Enter EXP0D_worker\n") ;
00666 #endif
00667
00668 if( first ){
00669 for( ii=0 ; ii < 26 ; ii++)
00670 atoz[ii] = (double *) malloc(sizeof(double) * VSIZE ) ;
00671 first = 0 ;
00672 #if 0
00673 fprintf(stderr,"Allocated atoz\n") ;
00674 #endif
00675 }
00676
00677 for( ii=0 ; ii < 26 ; ii++ )
00678 for (jj=0; jj<VSIZE; jj++) atoz[ii][jj] = 0.0 ;
00679
00680 #if 0
00681 fprintf(stderr,"Zeroed atoz\n") ;
00682 #endif
00683
00684 for( ii=0 ; ii < num ; ii+=VSIZE ){
00685 jbot = ii ;
00686 jtop = MIN( ii + VSIZE , num ) ;
00687
00688 for( jj=jbot ; jj < jtop ; jj ++ ) atoz[exp0d_var][jj-ii] = vec[jj] ;
00689
00690 PARSER_evaluate_vector( exp0d_pc , atoz , jtop-jbot , tvec ) ;
00691
00692 for( jj=jbot ; jj < jtop ; jj ++ ) vec[jj] = tvec[jj-ii] ;
00693 }
00694
00695 #if 0
00696 fprintf(stderr,"Exit EXP0D_worker\n") ;
00697 #endif
00698
00699 return ;
00700 }
|
|
||||||||||||||||||||||||
|
Definition at line 255 of file plug_lsqfit.c. References dt, LSQ_worker(), and vec. Referenced by PLUGIN_init().
00256 {
00257 LSQ_worker( nt , dt , vec , FALSE , label ) ;
00258 return ;
00259 }
|
|
||||||||||||||||||||||||
|
22 Apr 1997: added label that will go to graphs * Definition at line 249 of file plug_lsqfit.c. References dt, LSQ_worker(), and vec. Referenced by PLUGIN_init().
00250 {
00251 LSQ_worker( nt , dt , vec , TRUE , label ) ;
00252 return ;
00253 }
|
|
|
Definition at line 174 of file plug_lsqfit.c. References baseline_strings, ignore, initialize, MRI_FLOAT_PTR, NBASE, nrsin, nrts, PLUTO_string_index(), polort, sinharm, and sinper. Referenced by PLUGIN_init().
00175 {
00176 char * str ;
00177 int ii ;
00178 float * tsar ;
00179
00180 /*--------- go to first input line ---------*/
00181
00182 PLUTO_next_option(plint) ;
00183
00184 str = PLUTO_get_string(plint) ;
00185 polort = PLUTO_string_index( str , NBASE , baseline_strings ) ;
00186
00187 ignore = PLUTO_get_number(plint) ;
00188
00189 /*------ loop over remaining options, check their tags, process them -----*/
00190
00191 nrsin = nrts = 0 ;
00192 do {
00193 str = PLUTO_get_optiontag(plint) ; if( str == NULL ) break ;
00194
00195 if( strcmp(str,"Sinusoid") == 0 ){
00196
00197 sinper[nrsin] = PLUTO_get_number(plint) ;
00198 sinharm[nrsin] = PLUTO_get_number(plint) - 1.0 ;
00199 if( sinper[nrsin] <= 0.0 )
00200 return "************************\n"
00201 "Illegal Sinusoid Period!\n"
00202 "************************" ;
00203
00204 nrsin++ ;
00205
00206 } else if( strcmp(str,"Timeseries") == 0 ){
00207
00208 tsim[nrts] = PLUTO_get_timeseries(plint) ;
00209
00210 if( tsim[nrts] == NULL || tsim[nrts]->nx < 3 || tsim[nrts]->kind != MRI_float )
00211 return "*************************\n"
00212 "Illegal Timeseries Input!\n"
00213 "*************************" ;
00214
00215 tsar = MRI_FLOAT_PTR(tsim[nrts]) ;
00216 for( ii=ignore ; ii < tsim[nrts]->nx && tsar[ii] >= WAY_BIG ; ii++ ) ; /* nada */
00217 ignore = ii ;
00218 nrts++ ;
00219
00220 } else {
00221 return "************************\n"
00222 "Illegal optiontag found!\n"
00223 "************************" ;
00224 }
00225 } while(1) ;
00226
00227 /*--- nothing left to do until data arrives ---*/
00228
00229 initialize = 1 ; /* force re-initialization */
00230
00231 /*** compute how many ref functions are ordered ***/
00232
00233 { int nref , ks ;
00234 char str[64] ;
00235
00236 nref = (polort+1) + nrts ;
00237 for( ks=0 ; ks < nrsin ; ks++ ) nref += 2*(sinharm[ks]+1) ;
00238 sprintf(str," \nNumber of fit parameters = %d\n",nref) ;
00239 PLUTO_popup_transient( plint , str ) ;
00240 }
00241
00242 return NULL ;
00243 }
|
|
||||||||||||||||||||||||
|
Definition at line 264 of file plug_lsqfit.c. References delayed_lsqfit(), dt, fit, free, ignore, initialize, lbuf, malloc, MRI_FLOAT_PTR, name, nrsin, nrts, MRI_IMAGE::nx, polort, ref, sbuf, sinharm, sinper, startup_lsqfit(), and vec. Referenced by LSQ_detrend(), and LSQ_fitter().
00265 {
00266 int nlen , nref ;
00267
00268 static int nlen_old = -666 , nref_old = -666 ;
00269 static double dt_old = -666.666 ;
00270 static float ** ref = NULL ;
00271 static double * dch = NULL ;
00272
00273 int ir , ii , ks,jh , j;
00274 float fac , tm , val ;
00275 float * fit , * tsar ;
00276
00277 /*** compute how many ref functions are ordered ***/
00278
00279 nref = (polort+1) + nrts ;
00280 for( ks=0 ; ks < nrsin ; ks++ ) nref += 2*(sinharm[ks]+1) ;
00281
00282 /*** do nothing if not enough data to fit ***/
00283
00284 nlen = nt - ignore ;
00285
00286 if( nlen <= nref ) return ; /* do nothing if not enough data to fit */
00287
00288 /** if data vectors are new length,
00289 or have a new number of reference vectors,
00290 or have a new time step and need sinusoids,
00291 or the initialize flag is set,
00292 then reinitialize reference vectors and Choleski factor **/
00293
00294 if( nlen != nlen_old || nref != nref_old ||
00295 initialize || (dt != dt_old && nrsin > 0) ){
00296
00297 /* free old storage */
00298
00299 if( ref != NULL ){
00300 for( ir=0 ; ir < nref_old ; ir++ ) if( ref[ir] != NULL ) free(ref[ir]) ;
00301 free(ref) ;
00302 }
00303 if( dch != NULL ) free(dch) ;
00304
00305 /* make space for ref vectors */
00306
00307 ref = (float **) malloc( sizeof(float *) * nref ) ;
00308 if( ref == NULL ){fprintf(stderr,"\nmalloc error in plug_lsqfit\n\a");
00309 return;
00310 /* EXIT(1); */
00311 }
00312 for( ir=0 ; ir < nref ; ir++ ){
00313 ref[ir] = (float *) malloc( sizeof(float) * nlen ) ;
00314 if( ref[ir] == NULL ){
00315 fprintf(stderr,"\nmalloc error in plug_lsqfit\n\a");
00316 for(j=0;j<=ir;j++)
00317 free(ref[j]);
00318 free(ref);
00319 ref = NULL;
00320 return;
00321 /* EXIT(1); */
00322 }
00323 }
00324 nlen_old = nlen ;
00325 nref_old = nref ;
00326 dt_old = dt ;
00327
00328 /**** fill ref vectors ****/
00329
00330 /* r(t) = 1 */
00331
00332 for( ii=0 ; ii < nlen ; ii++ ) ref[0][ii] = 1.0 ;
00333
00334 ir = 1 ;
00335 if( polort > 0 ){
00336
00337 /* r(t) = t - tmid */
00338
00339 tm = 0.5 * (nlen-1.0) ; fac = 2.0 / nlen ;
00340 for( ii=0 ; ii < nlen ; ii++ ) ref[1][ii] = (ii-tm)*fac ;
00341 ir = 2 ;
00342
00343 /* r(t) = (t-tmid)**ir */
00344
00345 for( ; ir <= polort ; ir++ )
00346 for( ii=0 ; ii < nlen ; ii++ )
00347 ref[ir][ii] = pow( (ii-tm)*fac , (double)ir ) ;
00348 }
00349
00350 if( dt == 0.0 ) dt = 1.0 ;
00351
00352 /* r(t) = sinusoids */
00353
00354 for( ks=0 ; ks < nrsin ; ks++ ){
00355 for( jh=0 ; jh <= sinharm[ks] ; jh++ ){
00356 fac = (2.0*PI) * dt * (jh+1) / sinper[ks] ;
00357 for( ii=0 ; ii < nlen ; ii++ ){
00358 ref[ir] [ii] = cos( fac * ii ) ;
00359 ref[ir+1][ii] = sin( fac * ii ) ;
00360 }
00361 ir += 2 ;
00362 }
00363 }
00364
00365 /* r(t) = timeseries files */
00366
00367 for( ks=0 ; ks < nrts ; ks++ ){
00368 if( tsim[ks] == NULL || tsim[ks]->nx - ignore < nlen ){
00369 initialize = 1 ;
00370 fprintf(stderr,"Inadequate time series #%d in LSQ plugin\n\a",ks+1) ;
00371 return ;
00372 }
00373 tsar = MRI_FLOAT_PTR(tsim[ks]) ;
00374 for( ii=0 ; ii < nlen ; ii++ ) ref[ir][ii] = tsar[ii+ignore] ;
00375 ir++ ;
00376 }
00377
00378 /* Cholesky-ize */
00379
00380 dch = startup_lsqfit( nlen , NULL , nref , ref ) ;
00381 if( dch == NULL ){
00382 initialize = 1 ;
00383 fprintf(stderr,"Choleski error in LSQ plugin\n\a") ;
00384 return ;
00385 }
00386
00387 initialize = 0 ;
00388 }
00389
00390 /** find least squares fit coefficients **/
00391
00392 fit = delayed_lsqfit( nlen , vec+ignore , nref , ref , dch ) ;
00393
00394 for( ii=0 ; ii < nlen ; ii++ ){
00395 val = 0.0 ;
00396 for( ir=0 ; ir < nref ; ir++ ) val += fit[ir] * ref[ir][ii] ;
00397
00398 vec[ii+ignore] = (dofit) ? val : vec[ii+ignore] - val ;
00399 }
00400
00401 /** 22 Apr 1997: create label if desired by AFNI **/
00402 /** [This is in static storage, since AFNI will copy it] **/
00403
00404 if( label != NULL ){ /* assemble this 1 line at a time from sbuf */
00405
00406 lbuf[0] = '\0' ; /* make this a 0 length string to start */
00407
00408 /** for each reference, make a string into sbuf **/
00409
00410 ir = 0 ;
00411 sprintf(sbuf,"Coef of 1 = %g\n" , fit[ir++] ) ;
00412 strcat(lbuf,sbuf) ;
00413
00414 for( ; ir <= polort ; ){
00415 sprintf(sbuf,"Coef of t**%d = %g\n" , ir,fit[ir++] ) ;
00416 strcat(lbuf,sbuf) ;
00417 }
00418
00419 for( ks=0 ; ks < nrsin ; ks++ ){
00420 for( jh=0 ; jh <= sinharm[ks] ; jh++ ){
00421 fac = sinper[ks] / (jh+1) ;
00422 sprintf(sbuf,"Coef of cos(2*Pi*t/%g) = %g\n" , fac , fit[ir++] ) ;
00423 strcat(lbuf,sbuf) ;
00424 sprintf(sbuf,"Coef of sin(2*Pi*t/%g) = %g\n" , fac , fit[ir++] ) ;
00425 strcat(lbuf,sbuf) ;
00426 }
00427 }
00428
00429 for( ks=0 ; ks < nrts ; ks++ ){
00430 sprintf(sbuf,"Coef of %s = %g\n" , tsim[ks]->name , fit[ir++] ) ;
00431 strcat(lbuf,sbuf) ;
00432 }
00433
00434 *label = lbuf ; /* send address of lbuf back in what label points to */
00435 }
00436
00437 free(fit) ;
00438 return ;
00439 }
|
|
|
Definition at line 105 of file plug_lsqfit.c. References baseline_strings, EXP0D_init(), global_plint, HARM_MAX, helpstring, LSQ_detrend(), LSQ_fitter(), LSQ_main(), NBASE, NRMAX_SIN, NRMAX_TS, PLUTO_add_hint(), PLUTO_register_1D_funcstr, PLUTO_set_runlabels(), PLUTO_set_sequence(), and TSGEN_init().
00106 {
00107 int ii ;
00108 PLUGIN_interface * plint ; /* will be the output of this routine */
00109
00110 if( ncall > 3 ) return NULL ; /* generate interfaces for ncall 0-3 */
00111
00112 if( ncall == 1 ) return TSGEN_init() ; /* interface # 1 */
00113 if( ncall == 2 ) return EXP0D_init() ; /* interface # 2 */
00114 #ifdef ALLOW_LOMO
00115 if( ncall == 3 ) return LOMOR_init() ; /* interface # 3 */
00116 #else
00117 if( ncall == 3 ) return NULL ;
00118 #endif
00119
00120 /***** otherwise, do interface # 0 *****/
00121
00122 /*---------------- set titles and call point ----------------*/
00123
00124 plint = PLUTO_new_interface( "LSqFit & Dtr" ,
00125 "Control LSqFit and LSqDtr Functions" ,
00126 helpstring ,
00127 PLUGIN_CALL_VIA_MENU , LSQ_main ) ;
00128
00129 global_plint = plint ; /* make global copy */
00130
00131 PLUTO_set_sequence( plint , "A:funcs:fitting" ) ;
00132
00133 PLUTO_add_hint( plint , "Control LSqFit and LSqDtr Functions" ) ;
00134
00135 PLUTO_set_runlabels( plint , "Set+Keep" , "Set+Close" ) ; /* 04 Nov 2003 */
00136
00137 /*----- Parameters -----*/
00138
00139 PLUTO_add_option( plint , "Parameters" , "Parameters" , TRUE ) ;
00140
00141 PLUTO_add_string( plint , "Baseline" , NBASE , baseline_strings , 1 ) ;
00142
00143 PLUTO_add_number( plint , "Ignore" , 0,20,0,3 , FALSE ) ;
00144
00145 /*----- Sinusoid -----*/
00146
00147 for( ii=0 ; ii < NRMAX_SIN ; ii++ ){
00148 PLUTO_add_option( plint , "Sinusoid" , "Sinusoid" , FALSE ) ;
00149 PLUTO_add_number( plint , "Period" , 0,99999,0,20, TRUE ) ;
00150 PLUTO_add_number( plint , "Harmonics" , 1,HARM_MAX,0,1 , FALSE ) ;
00151 }
00152
00153 /*----- Timeseries -----*/
00154
00155 for( ii=0 ; ii < NRMAX_TS ; ii++ ){
00156 PLUTO_add_option( plint , "Timeseries" , "Timeseries" , FALSE ) ;
00157 PLUTO_add_timeseries( plint , "File" ) ;
00158 }
00159
00160 /*--------- done with interface setup ---------*/
00161
00162 PLUTO_register_1D_funcstr( "LSqFit" , LSQ_fitter ) ;
00163 PLUTO_register_1D_funcstr( "LSqDtr" , LSQ_detrend ) ;
00164
00165 return plint ;
00166 }
|
|
|
for each reference, make a string into sbuf * Definition at line 443 of file plug_lsqfit.c. References HARM_MAX, plehstring, PLUTO_add_hint(), and TSGEN_main(). Referenced by PLUGIN_init().
00444 {
00445 PLUGIN_interface * plint ;
00446
00447 /*---------------- set titles and call point ----------------*/
00448
00449 plint = PLUTO_new_interface( "TS Generate" ,
00450 "Generate a Timeseries" ,
00451 plehstring ,
00452 PLUGIN_CALL_VIA_MENU , TSGEN_main ) ;
00453
00454 PLUTO_add_hint( plint , "Generate a 1D Timeseries" ) ;
00455
00456 /*----- Parameters -----*/
00457
00458 PLUTO_add_option( plint , "Parameters" , "Parameters" , TRUE ) ;
00459 PLUTO_add_number( plint , "Delta" , 0,99999,1, 0 , TRUE ) ;
00460 PLUTO_add_number( plint , "Length" , 3,9999,0,3 , TRUE ) ;
00461
00462 /*----- Output -----*/
00463
00464 PLUTO_add_option( plint , "Output" , "Output" , TRUE ) ;
00465 PLUTO_add_string( plint , "Label" , 0,NULL , 19 ) ;
00466
00467 /*----- Polynomial -----*/
00468
00469 PLUTO_add_option( plint , "Polynomial" , "Polynomial" , FALSE ) ;
00470 PLUTO_add_number( plint , "Order" , 2,20,0,2 , FALSE ) ;
00471
00472 /*----- Sinusoid -----*/
00473
00474 PLUTO_add_option( plint , "Sinusoid" , "Sinusoid" , FALSE ) ;
00475 PLUTO_add_number( plint , "Period" , 0,99999,0,20, TRUE ) ;
00476 PLUTO_add_number( plint , "Harmonics" , 1,HARM_MAX,0,1 , FALSE ) ;
00477
00478 return plint ;
00479 }
|
|
|
Definition at line 481 of file plug_lsqfit.c. References MRI_FLOAT_PTR, mri_free(), mri_new(), and PLUTO_register_timeseries(). Referenced by TSGEN_init().
00482 {
00483 char * label , * str ;
00484 int ii , jj ;
00485 float * tsar ;
00486 MRI_IMAGE * tsim ;
00487 float delta , period=0.0 ;
00488 int nx , ny=0 , npol=0 , nharm=-1 ;
00489 int pp ;
00490 double fac , val ;
00491
00492 /*--------- go to first input line ---------*/
00493
00494 PLUTO_next_option(plint) ;
00495
00496 delta = PLUTO_get_number(plint) ;
00497 if( delta <= 0.0 ) return "**********************\n"
00498 "Illegal value of Delta\n"
00499 "**********************" ;
00500
00501 nx = PLUTO_get_number(plint) ;
00502
00503 /*----- next input line -----*/
00504
00505 PLUTO_next_option(plint) ;
00506 label = PLUTO_get_string(plint) ;
00507 if( label == NULL || strlen(label) == 0 ) return "**********************\n"
00508 "Illegal value of Label\n"
00509 "**********************" ;
00510
00511 /*----- rest of input lines -----*/
00512
00513 do {
00514 str = PLUTO_get_optiontag(plint) ; if( str == NULL ) break ;
00515
00516 if( strcmp(str,"Sinusoid") == 0 ){
00517
00518 period = PLUTO_get_number(plint) ;
00519 nharm = PLUTO_get_number(plint) - 1.0 ;
00520
00521 if( period <= 0.0 ) return "***********************\n"
00522 "Illegal Sinusoid Period\n"
00523 "***********************" ;
00524
00525
00526 } else if( strcmp(str,"Polynomial") == 0 ){
00527
00528 npol = PLUTO_get_number(plint) ;
00529
00530 } else {
00531 return "***********************\n"
00532 "Illegal optiontag found\n"
00533 "***********************" ;
00534 }
00535 } while(1) ;
00536
00537 /********** Make the timeseries ***********/
00538
00539 ny = 0 ;
00540 if( npol > 0 ) ny = npol-1 ;
00541 if( period > 0.0 ) ny += 2*(nharm+1) ;
00542
00543 if( ny < 1 ) return "***********************\n"
00544 "No timeseries specified\n"
00545 "***********************" ;
00546
00547 tsim = mri_new( nx , ny , MRI_float ) ;
00548 jj = 0 ;
00549
00550 fac = 1.99999 / (nx-1) ;
00551 for( pp=2 ; pp <= npol ; pp++,jj++ ){
00552
00553 tsar = MRI_FLOAT_PTR(tsim) + (jj*nx) ;
00554
00555 for( ii=0 ; ii < nx ; ii++ ){
00556 val = fac * ii - 0.999995 ;
00557 tsar[ii] = cos( pp * acos(val) ) ;
00558 }
00559 }
00560
00561 for( pp=0 ; pp <= nharm ; pp++ , jj+=2 ){
00562 fac = (2.0*PI) * delta * (pp+1) / period ;
00563 tsar = MRI_FLOAT_PTR(tsim) + (jj*nx) ;
00564
00565 for( ii=0 ; ii < nx ; ii++ ){
00566 tsar[ii] = cos( fac * ii ) ;
00567 tsar[ii+nx] = sin( fac * ii ) ;
00568 }
00569 }
00570
00571 PLUTO_register_timeseries( label , tsim ) ;
00572 mri_free(tsim) ;
00573 return NULL ;
00574 }
|
Variable Documentation
|
|
Definition at line 52 of file plug_lsqfit.c. Referenced by LSQ_main(), and PLUGIN_init(). |
|
|
Definition at line 597 of file plug_lsqfit.c. |
|
|
Definition at line 595 of file plug_lsqfit.c. Referenced by EXP0D_init(), EXP0D_main(), and EXP0D_worker(). |
|
|
Initial value: " Purpose: Control the Expr 0D Transformation function\n" "\n" " Variable = letter used as input to expression\n" " Expression = arithmetic expression to evaluate\n" Definition at line 580 of file plug_lsqfit.c. Referenced by EXP0D_init(). |
|
|
Definition at line 77 of file plug_lsqfit.c. Referenced by PLUGIN_init(). |
|
|
Initial value: " Purpose: Control the 'LSqFit' and 'LSqDtr 1D functions.\n" "\n" " Parameters: Baseline = 'Constant' or 'Linear'\n" " Is the baseline 'a' or 'a+b*t'?\n" " Ignore = Number of points to ignore at\n" " start of each timeseries.\n" " \n" " Sinusoids: Period = Fundamental period to use.\n" " Harmonics = Number of overtones to use.\n" " \n" " Timeseries: File = Input timeseries file to use.\n" Definition at line 19 of file plug_lsqfit.c. Referenced by PLUGIN_init(). |
|
|
Definition at line 83 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 83 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 261 of file plug_lsqfit.c. Referenced by LSQ_worker(). |
|
|
Definition at line 83 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 83 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Initial value: " Purpose: Generate a timeseries and store in AFNI list\n" "\n" " Parameters: Delta = time step between points\n" " Length = number of points\n" "\n" " Output: Label = String to label timeseries by\n" " in AFNI choosers\n" "\n" " Polynomial: Order = Maximum power to include\n" " (Chebyshev polynomials are used)\n" "\n" " Sinusoid: Period = Fundamental period to use.\n" " Harmonics = Number of overtones to use.\n" Definition at line 33 of file plug_lsqfit.c. Referenced by TSGEN_init(). |
|
|
Definition at line 599 of file plug_lsqfit.c. Referenced by EXP0D_func_init(), and EXP0D_init(). |
|
|
Definition at line 83 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 262 of file plug_lsqfit.c. Referenced by LSQ_worker(). |
|
|
Definition at line 85 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 84 of file plug_lsqfit.c. Referenced by LSQ_main(), and LSQ_worker(). |
|
|
Definition at line 86 of file plug_lsqfit.c. |
|
|
Initial value: {
" A ", " B ", " C ", " D ", " E ",
" F ", " G ", " H ", " I ", " J ",
" K ", " L ", " M ", " N ", " O ",
" P ", " Q ", " R ", " S ", " T ",
" U ", " V ", " W ", " X ", " Y ", " Z " }Definition at line 588 of file plug_lsqfit.c. Referenced by EXP0D_init(), and EXP0D_main(). |