Changeset 20936 for trunk/Ohana/src/opihi/cmd.data/fit.c
- Timestamp:
- Dec 7, 2008, 3:31:01 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/fit.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/fit.c
r16059 r20936 8 8 int N, Weight, Quiet, ClipNiter; 9 9 Vector *xvec, *yvec, *dyvec; 10 float *x, *y, *dy, *yf, *yfit;10 opihi_flt *x, *y, *dy, *yf, *yfit; 11 11 char name[64], *mask; 12 12 … … 53 53 return (FALSE); 54 54 } 55 if (Weight && xvec[0].Nelements != dyvec[0].Nelements) { 56 gprint (GP_ERR, "vectors must have same length\n"); 57 return (FALSE); 58 } 59 55 REQUIRE_VECTOR_FLT (xvec, FALSE); 56 REQUIRE_VECTOR_FLT (yvec, FALSE); 57 58 if (Weight) { 59 REQUIRE_VECTOR_FLT (dyvec, FALSE); 60 if (xvec[0].Nelements != dyvec[0].Nelements) { 61 gprint (GP_ERR, "vectors must have same length\n"); 62 return (FALSE); 63 } 64 } 65 66 60 67 /* nterm is number of polynomial terms, starting at x^0 */ 61 68 order = atof (argv[3]); … … 63 70 mterm = 2*nterm; 64 71 65 ALLOCATE (yfit, float, xvec[0].Nelements);72 ALLOCATE (yfit, opihi_flt, xvec[0].Nelements); 66 73 ALLOCATE (mask, char, xvec[0].Nelements); 67 74 memset (mask, 0, xvec[0].Nelements); … … 88 95 89 96 /* perform linear fit */ 90 x = xvec[0].elements ;91 y = yvec[0].elements ;92 if (Weight) dy = dyvec[0].elements ;97 x = xvec[0].elements.Flt; 98 y = yvec[0].elements.Flt; 99 if (Weight) dy = dyvec[0].elements.Flt; 93 100 94 101 for (i = 0; i < xvec[0].Nelements; i++, x++, y++) { … … 121 128 122 129 /* generate fitted values */ 123 x = xvec[0].elements ;130 x = xvec[0].elements.Flt; 124 131 yf = yfit; 125 132 for (i = 0; i < xvec[0].Nelements; i++, x++, yf++) { … … 134 141 135 142 /* measure fit residual scatter */ 136 x = xvec[0].elements ;137 y = yvec[0].elements ;143 x = xvec[0].elements.Flt; 144 y = yvec[0].elements.Flt; 138 145 yf = yfit; 139 146 dY = dY2 = 0; … … 150 157 151 158 /* mask outlier points */ 152 x = xvec[0].elements ;153 y = yvec[0].elements ;159 x = xvec[0].elements.Flt; 160 y = yvec[0].elements.Flt; 154 161 yf = yfit; 155 162 Nmask = 0; … … 193 200 if ((fvec = SelectVector ("yfit", ANYVECTOR, TRUE)) == NULL) return (FALSE); 194 201 if ((mvec = SelectVector ("mask", ANYVECTOR, TRUE)) == NULL) return (FALSE); 195 free (fvec[0].elements );196 fvec[0].elements = yfit;202 free (fvec[0].elements.Flt); 203 fvec[0].elements.Flt = yfit; 197 204 fvec[0].Nelements = xvec[0].Nelements; 198 205 mvec[0].Nelements = xvec[0].Nelements; 199 206 200 REALLOCATE (mvec[0].elements , float, xvec[0].Nelements);207 REALLOCATE (mvec[0].elements.Flt, opihi_flt, xvec[0].Nelements); 201 208 for (i = 0; i < xvec[0].Nelements; i++) { 202 mvec[0].elements [i] = mask[i];209 mvec[0].elements.Flt[i] = mask[i]; 203 210 } 204 211 } else {
Note:
See TracChangeset
for help on using the changeset viewer.
