Doxygen Source Code Documentation
delay.c File Reference
#include "RegAna.c"#include "ranks.c"Go to the source code of this file.
Functions | |
| int | init_indep_var_matrix (int q, int p, int NFirst, int N, int polort, int num_ort_files, int num_ideal_files, MRI_IMAGE **ort_array, int **ort_list, MRI_IMAGE **ideal_array, int **ideal_list, float *x_bot, float *x_ave, float *x_top, int *good_list, matrix *x) |
| int | init_delay (int q, int p, int N, int num_idealts, matrix xdata, matrix *x_base, matrix *xtxinvxt_base, matrix *x_ideal, matrix *xtxinvxt_ideal, float **rarray) |
| float | sign (float x) |
| int | Read_part_file_delay (float *x, char *f_name, int a, int b) |
Function Documentation
|
||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 192 of file delay.c. References calc_coef(), calc_matrices(), calc_resids(), column_to_vector(), vector::elts, free, malloc, matrix_destroy(), matrix_initialize(), MTEST, p, q, rank_darray(), vector_destroy(), and vector_initialize(). Referenced by calculate_results().
00200 : (1/(X'X))X' for baseline model */ 00201 matrix * x_ideal, /* extracted X matrices for ideal models */ 00202 matrix * xtxinvxt_ideal, /* matrix: (1/(X'X))X' for ideal models */ 00203 float ** rarray /* ranked arrays of ideal time series */ 00204 ) 00205 00206 { 00207 int * plist = NULL; /* list of model parameters */ 00208 int ip, it; /* parameter indices */ 00209 int is, js; /* ideal indices */ 00210 int jm; /* lag index */ 00211 int ok; /* flag for successful matrix calculation */ 00212 matrix xtxinv_temp; /* intermediate results */ 00213 vector ideal; /* ideal vector */ 00214 vector coef_temp; /* intermediate results */ 00215 vector xres; /* vector of residuals */ 00216 float sse_base; /* baseline model error sum of squares */ 00217 00218 00219 /*----- Initialize matrix -----*/ 00220 matrix_initialize (&xtxinv_temp); 00221 vector_initialize (&ideal); 00222 vector_initialize (&coef_temp); 00223 vector_initialize (&xres); 00224 00225 00226 /*----- Allocate memory -----*/ 00227 plist = (int *) malloc (sizeof(int) * p); MTEST (plist); 00228 00229 00230 /*----- Initialize matrices for the baseline model -----*/ 00231 for (ip = 0; ip < q; ip++) 00232 plist[ip] = ip; 00233 ok = calc_matrices (xdata, q, plist, x_base, &xtxinv_temp, xtxinvxt_base); 00234 if (!ok) { matrix_destroy (&xtxinv_temp); return (0); }; 00235 00236 00237 /*----- Initialize matrices for ideal functions -----*/ 00238 for (is = 0; is < num_idealts; is++) 00239 { 00240 for (ip = 0; ip < q; ip++) 00241 { 00242 plist[ip] = ip; 00243 } 00244 00245 plist[q] = q + is; 00246 00247 ok = calc_matrices (xdata, q+1, plist, 00248 &(x_ideal[is]), &xtxinv_temp, &(xtxinvxt_ideal[is])); 00249 if (!ok) { matrix_destroy (&xtxinv_temp); return (0); }; 00250 } 00251 00252 00253 /*----- Set up the ranked array for each ideal -----*/ 00254 for (is = 0; is < num_idealts; is++) 00255 { 00256 /*----- Convert column of matrix to vector -----*/ 00257 column_to_vector (xdata, q+is, &ideal); 00258 00259 /*----- Calculate regression coefficients for baseline model -----*/ 00260 calc_coef (*xtxinvxt_base, ideal, &coef_temp); 00261 00262 /*----- Calculate the error sum of squares for the baseline model -----*/ 00263 sse_base = calc_resids (*x_base, coef_temp, ideal, &xres); 00264 00265 /*----- Form rank array from residual array -----*/ 00266 rarray[is] = rank_darray (N, xres.elts); 00267 00268 } 00269 00270 00271 /*----- Destroy matrix -----*/ 00272 matrix_destroy (&xtxinv_temp); 00273 vector_destroy (&ideal); 00274 vector_destroy (&coef_temp); 00275 vector_destroy (&xres); 00276 00277 00278 /*----- Deallocate memory -----*/ 00279 free (plist); plist = NULL; 00280 00281 00282 return (1); 00283 } |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
if here, m > 20 ==> use recurrence relation * Definition at line 28 of file delay.c. References BIG_NUMBER, far, i, matrix_create(), matrix_destroy(), matrix_equate(), matrix_extract_rows(), matrix_initialize(), MRI_FLOAT_PTR, p, and q.
00048 {
00049 const int BIG_NUMBER = 33333;
00050 int i; /* time index */
00051 int m; /* X matrix column index */
00052 int n; /* X matrix row index */
00053 int is; /* input ideal index */
00054 float * far = NULL;
00055 int nx, ny, iq, nq;
00056 int Ngood;
00057 matrix xgood;
00058
00059
00060 /*----- Initialize X matrix -----*/
00061 matrix_create (N, p, x);
00062 matrix_initialize (&xgood);
00063
00064
00065 /*----- Set up columns of X matrix corresponding to polynomial orts -----*/
00066 for (m = 0; m <= polort; m++)
00067 for (n = 0; n < N; n++)
00068 {
00069 i = n + NFirst;
00070 (*x).elts[n][m] = pow ((double)i, (double)m);
00071 }
00072
00073
00074 /*----- Set up columns of X matrix corresponding to ort time series -----*/
00075 for (is = 0; is < num_ort_files; is++)
00076 {
00077 far = MRI_FLOAT_PTR (ort_array[is]);
00078 nx = ort_array[is]->nx;
00079 ny = ort_array[is]->ny;
00080
00081 if (ort_list[is] == NULL)
00082 for (iq = 0; iq < ny; iq++)
00083 {
00084 for (n = 0; n < N; n++)
00085 {
00086 i = n + NFirst;
00087 (*x).elts[n][m] = *(far + iq*nx + i);
00088 }
00089 m++;
00090 }
00091 else
00092 {
00093 nq = ort_list[is][0];
00094 for (iq = 1; iq <= nq; iq++)
00095 {
00096 for (n = 0; n < N; n++)
00097 {
00098 i = n + NFirst;
00099 (*x).elts[n][m] = *(far + ort_list[is][iq]*nx + i);
00100 }
00101 m++;
00102 }
00103 }
00104 }
00105
00106
00107 /*----- Set up columns of X matrix corresponding to ideal time series -----*/
00108 for (is = 0; is < num_ideal_files; is++)
00109 {
00110 far = MRI_FLOAT_PTR (ideal_array[is]);
00111 nx = ideal_array[is]->nx;
00112 ny = ideal_array[is]->ny;
00113
00114 if (ideal_list[is] == NULL)
00115 for (iq = 0; iq < ny; iq++)
00116 {
00117 for (n = 0; n < N; n++)
00118 {
00119 i = n + NFirst;
00120 (*x).elts[n][m] = *(far + iq*nx + i);
00121 }
00122
00123 m++;
00124 }
00125 else
00126 {
00127 nq = ideal_list[is][0];
00128 for (iq = 1; iq <= nq; iq++)
00129 {
00130 for (n = 0; n < N; n++)
00131 {
00132 i = n + NFirst;
00133 (*x).elts[n][m] = *(far + ideal_list[is][iq]*nx + i);
00134 }
00135
00136 m++;
00137 }
00138 }
00139 }
00140
00141
00142 /*----- Remove row if ideal contains value over 33333 -----*/
00143 Ngood = N;
00144 m = 0;
00145 for (n = 0; n < N; n++)
00146 {
00147 for (is = q; is < p; is++)
00148 {
00149 if ((*x).elts[n][is] >= BIG_NUMBER) break;
00150 }
00151 if (is < p)
00152 {
00153 Ngood--;
00154 }
00155 else
00156 {
00157 good_list[m] = n;
00158 m++;
00159 }
00160 }
00161 matrix_extract_rows ((*x), Ngood, good_list, &xgood);
00162 matrix_equate (xgood, x);
00163
00164
00165 /*----- Find min, max, and ave for each column of the X matrix -----*/
00166 for (is = 0; is < p; is++)
00167 {
00168 x_bot[is] = x_top[is] = (*x).elts[0][is];
00169 x_ave[is] = 0.0;
00170 for (n = 0; n < Ngood; n++)
00171 {
00172 if ((*x).elts[n][is] < x_bot[is]) x_bot[is] = (*x).elts[n][is];
00173 if ((*x).elts[n][is] > x_top[is]) x_top[is] = (*x).elts[n][is];
00174 x_ave[is] += (*x).elts[n][is] / Ngood;
00175 }
00176 }
00177
00178
00179 matrix_destroy (&xgood);
00180
00181 return (Ngood);
00182
00183 }
|
|
||||||||||||||||||||
|
Definition at line 308 of file delay.c. References a. Referenced by check_for_valid_inputs().
00313 {
00314
00315 int cnt=0,ex,line_num;
00316 float buf;
00317 FILE*file_in;
00318
00319 file_in = fopen (f_name,"r");
00320 if (file_in == NULL) {
00321 printf ("\aCould not open %s \n",f_name);
00322 printf ("Exiting @ Read_file function\n");
00323 exit (0);
00324 }
00325
00326 if (a > b || a==0) {
00327 printf ("\a\n\33[1mError in (from , to) line numbers\n\33\[0m");
00328 printf ("Exiting @Read_part_file function \n");
00329 exit (0);
00330 }
00331
00332 line_num = 1;
00333 if (a == 1) {
00334 ex = fscanf (file_in,"%f",&x[cnt]);
00335 ++cnt;
00336 }
00337 else ex = fscanf (file_in,"%f",&buf);
00338 ++line_num;
00339 while (ex != EOF && line_num <= b)
00340 {
00341 if (line_num >=a && line_num <=b)
00342 {
00343 ex = fscanf (file_in,"%f",&x[cnt]);
00344 ++cnt;
00345 if (ex == EOF) --cnt;
00346 }
00347 else
00348 {
00349 ex = fscanf (file_in,"%f",&buf);
00350 }
00351 ++line_num;
00352
00353 }
00354
00355 if (ex == EOF)
00356 {
00357 --line_num;
00358 printf ("\n\33[1mEOF reached before line \33[0m%d\n",b);
00359 printf ("Only %d lines were read, from line %d to %d\n",cnt,a,line_num-1);
00360 }
00361
00362 fclose (file_in);
00363 return (cnt);
00364 }
|
|
|
Definition at line 297 of file delay.c.
00299 {
00300 if (x > 0.0) return (1.0);
00301 if (x < 0.0) return (-1.0);
00302 return (0.0);
00303 }
|