home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / BarlaA / sw / OLD / Simo / SVM_mono / training.c < prev   
C/C++ Source or Header  |  2002-06-25  |  2KB  |  73 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "patt_rec.h"
  4.  
  5. extern int    dim;
  6. extern int    ell;
  7. extern int      one_out, one_out_flag;
  8.  
  9. training *read_training(FILE *fp1)
  10. {
  11.     register    i, j, k;
  12.     int        l1,  dim1;
  13.     double        value;
  14.     training    *tr;
  15.     Point        *points, *curr_point;
  16.     double        *vect , *out_vect;
  17.     FILE            *f;
  18.  
  19.     fscanf(fp1, "%d", &l1);
  20.     fscanf(fp1, "%d", &dim1);
  21.  
  22.     fprintf(stderr, "reading %d %d-d data...\n", l1, dim1);
  23.     if (one_out_flag) fprintf(stderr,"of which the %d-th is left out \n", one_out);
  24.  
  25.     fprintf(stderr,"training one_out %d one_out_flag %d\n",one_out,one_out_flag);
  26.     ell = l1 ;
  27.     
  28.     if (one_out_flag) 
  29.       ell = l1-1;
  30.     else one_out = -1;
  31.     dim = dim1;
  32.     
  33.     tr = (training *) myalloc(NULL, sizeof(training), "read_training: tr\n");
  34.     points = (Point *) myalloc(NULL, ell*sizeof(Point), "read_training: points\n");
  35.     
  36.     k=0;
  37.     for (i = 0; i < l1; i++) 
  38.       {
  39.         if ((!one_out_flag) || (i != one_out)) {
  40.           curr_point = points + k;
  41.           
  42.           vect = (double *) myalloc(NULL, dim*sizeof(double), "read_training: vect\n");
  43.           for (j = 0; j < dim; j++)
  44.         fscanf(fp1, "%lf", vect + j);
  45.           curr_point->vect = vect;
  46.           curr_point->class = 1;
  47.           fprintf(stderr,"%d ",i);
  48.           k++;
  49.         }
  50.         else {
  51.           fprintf(stderr,"\n OUT %d\n",i);
  52.           f = fopen("test","w");
  53.           fprintf(f,"%d %d\n",1,dim);
  54.           out_vect = (double *)malloc(sizeof(double)*dim);
  55.           for (j = 0; j < dim; j++) {
  56.         fscanf(fp1, "%lf", out_vect + j);
  57.         fprintf(f, "%lf ", out_vect[j]);
  58.           }
  59.       
  60.           fclose(f);
  61.         }
  62.       }
  63.  
  64.     tr->ell = ell;
  65.     tr->dim = dim;
  66.     tr->points = points;
  67.     fprintf(stderr, "done\n");
  68.     
  69.     return tr;
  70. }
  71.  
  72.  
  73.