コード例 #1
0
ファイル: knn.c プロジェクト: GarfieldEr007/yael
/* read a file containing floating vectors in various formats. Check the NaN */
float * my_fvec_read (const char * fname, int fmt, int verbose, 
		      int * nptr, int * dptr)
{
  int ret = -1;
  float * v = NULL;
  int n = *nptr;
  int d = *dptr;

  /* read the vectors from the input file, and sanitize them if needed */
  switch (fmt) {
  case FMT_FVEC:
    if (d == 0 || n == 0) {/* automatically read the dimension */
      ret = fvecs_fsize (fname, &d, &n);
      fprintf (stderr, "File %s contains (%d bytes) %d vectors of dimension %d\n", 
	       fname, ret, n, d);
      assert (ret);    
    }
    v = fvec_new (n * d);
    ret = fvecs_read (fname, d, n, v);
    break;

  case FMT_TEXT:
    assert (n !=0 && d != 0);
    v = fvec_new (n * d);
    ret = fvecs_read_txt (fname, d, n, v);
    break;

  case FMT_BVEC:
    if (d == 0 || n == 0) {/* automatically read the dimension */
      ret = bvecs_fsize (fname, &d, &n);
      fprintf (stderr, "File %s contains (%d bytes) %d vectors of dimension %d\n", 
	       fname, ret, n, d);
      assert (ret);    
    }
    v = fvec_new (n * d);
    ret = b2fvecs_read (fname, d, n, v);
    break;

  default: assert (1 || "Unknown input format\n");
  }

  assert (ret >= n);

  /* Remove the Nan values */
  int nNaN = fvec_purge_nans (v, n * d, 2);
  if (nNaN > 0 && verbose >= 1)
    fprintf (stderr, "found %d NaN values in what read from %s\n", 
	     nNaN, fname);

  *dptr = d;
  *nptr = n;
  return v;
}
コード例 #2
0
ファイル: vector.c プロジェクト: zhrh/clustering-pca
int b2fvecs_read (const char *fname, int d, int n, float *v)
{
  int n_new; 
  int d_new;
  bvecs_fsize (fname, &d_new, &n_new);
  assert (d_new == d);
  assert (n <= n_new);

  FILE * f = fopen (fname, "r");
  assert (f || "b2fvecs_read: Unable to open the file");
  b2fvecs_fread (f, v, n);
  fclose (f);
  return n;
}
コード例 #3
0
ファイル: vector.c プロジェクト: AlbertOh90/videosearch
int b2fvecs_new_read (const char *fname, int *d_out, float **v_out)
{
  int n;
  int d;
  bvecs_fsize (fname, &d, &n);
  float * v = fvec_new ((long) n * (long) d);
  FILE * f = fopen (fname, "r");
  assert (f || "bvecs_new_read: Unable to open the file");
  b2fvecs_fread (f, v, n);
  fclose (f);

  v_out = &v;
  return n;
}