- Timestamp:
- Nov 30, 2008, 7:45:21 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vsmooth.c
r20839 r20857 3 3 int vsmooth (int argc, char **argv) { 4 4 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; 8 9 Vector *in; 9 10 … … 23 24 sigma = atof (argv[2]); 24 25 Nx = in[0].Nelements; 25 vi = in[0].elements.Flt;26 26 27 27 /* build a 1D gaussian */ … … 36 36 ALLOCATE (vo, opihi_flt, Nx); 37 37 38 isFloat = (in[0].type == OPIHI_FLT); 39 vf = in[0].elements.Flt; 40 vi = in[0].elements.Int; 41 38 42 for (i = 0; i < Nx; i++) { 39 43 g = s = 0; … … 41 45 if (i+n < 0) continue; 42 46 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; 44 49 g += gauss[n]; 45 50 } … … 47 52 } 48 53 49 free (in[0].elements.Flt);50 54 free (gaussnorm); 51 55 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; 52 64 in[0].elements.Flt = vo; 53 65 return (TRUE);
Note:
See TracChangeset
for help on using the changeset viewer.
