IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 30, 2008, 7:45:21 AM (18 years ago)
Author:
eugene
Message:

modify functions to use both int and flt vectors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vsmooth.c

    r20839 r20857  
    33int vsmooth (int argc, char **argv) {
    44 
    5   int i, n, N, Nx, Ns, Ngauss;
    6   opihi_flt *vi, *vo, *gauss, *gaussnorm;
    7   float g, s, sigma, Nsigma;
     5  int i, n, N, Nx, Ns, Ngauss, isFloat;
     6  opihi_flt *vf, *vo, *gauss, *gaussnorm;
     7  opihi_int *vi;
     8  float g, s, sigma, Nsigma, value;
    89  Vector *in;
    910
     
    2324  sigma = atof (argv[2]);
    2425  Nx = in[0].Nelements;
    25   vi = in[0].elements.Flt;
    2626
    2727  /* build a 1D gaussian */
     
    3636  ALLOCATE (vo, opihi_flt, Nx);
    3737
     38  isFloat = (in[0].type == OPIHI_FLT);
     39  vf = in[0].elements.Flt;
     40  vi = in[0].elements.Int;
     41
    3842  for (i = 0; i < Nx; i++) {
    3943    g = s = 0;
     
    4145      if (i+n < 0) continue;
    4246      if (i+n >= Nx) continue;
    43       s += gauss[n]*vi[i+n];
     47      value = isFloat ? vf[i+n] : vi[i+n];
     48      s += gauss[n]*value;
    4449      g += gauss[n];
    4550    }
     
    4752  }
    4853
    49   free (in[0].elements.Flt);
    5054  free (gaussnorm);
    5155
     56  if (isFloat) {
     57    free (in[0].elements.Flt);
     58  } else {
     59    free (in[0].elements.Int);
     60  }
     61
     62  // smoothing an int vector results in a float vector
     63  in[0].type = OPIHI_FLT;
    5264  in[0].elements.Flt = vo;
    5365  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.