- 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/vclip.c
r20839 r20857 3 3 int vclip (int argc, char **argv) { 4 4 5 int i, Npix, DO_NAN, DO_INF, N;5 int i, Npix, DO_NAN, DO_INF, DO_CLIP, N; 6 6 double min, Vmin, max, Vmax, nan_val, inf_val; 7 7 opihi_flt *in; … … 33 33 if ((vec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE); 34 34 35 DO_CLIP = FALSE; 35 36 if (argc == 6) { 36 37 min = atof (argv[2]); … … 38 39 max = atof (argv[4]); 39 40 Vmax = atof (argv[5]); 41 DO_CLIP = TRUE; 40 42 } 41 43 44 if (DO_NAN && vec[0].type == OPIHI_INT) { 45 gprint (GP_ERR, " warning : clipping on NAN is invalid for INT vectors\n"); 46 return (FALSE); 47 } 48 49 if (DO_INF && vec[0].type == OPIHI_INT) { 50 gprint (GP_ERR, " warning : clipping on INF is invalid for INT vectors\n"); 51 return (FALSE); 52 } 53 42 54 Npix = vec[0].Nelements; 43 in = vec[0].elements.Flt;44 55 45 if (argc == 6) { 56 if (vec[0].type == OPIHI_FLT) { 57 opihi_flt *in = vec[0].elements.Flt; 46 58 for (i = 0; i < Npix; i++, in++) { 47 if ( *in < min)59 if (DO_CLIP && (*in < min)) { 48 60 *in = Vmin; 49 if (*in > max) 61 } 62 if (DO_CLIP && (*in > max)) { 50 63 *in = Vmax; 51 } 52 } 53 in = vec[0].elements.Flt; 54 if (DO_NAN) { 55 for (i = 0; i < Npix; i++, in++) { 56 if (isnan (*in)) { 64 } 65 if (!finite (*in) && DO_INF) { 66 *in = inf_val; 67 } 68 if (isnan (*in) && DO_NAN) { 57 69 *in = nan_val; 58 70 } 59 71 } 60 } 61 in = vec[0].elements.Flt; 62 if (DO_INF) { 72 } else { 73 opihi_int *in = vec[0].elements.Int; 63 74 for (i = 0; i < Npix; i++, in++) { 64 if (!finite (*in)) { 65 *in = inf_val; 75 if (DO_CLIP && (*in < min)) { 76 *in = Vmin; 77 } 78 if (DO_CLIP && (*in > max)) { 79 *in = Vmax; 66 80 } 67 81 } 68 82 } 69 83 return (TRUE); 70 71 84 } 72 73
Note:
See TracChangeset
for help on using the changeset viewer.
