Changeset 41164 for trunk/Ohana/src/opihi/cmd.data/vgauss.c
- Timestamp:
- Nov 27, 2019, 11:22:02 AM (7 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/vgauss.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/vgauss.c
r39457 r41164 3 3 /* local private functions */ 4 4 opihi_flt fgaussOD (opihi_flt, opihi_flt *, int, opihi_flt *); 5 int vgauss_apply (int argc, char **argv); 5 6 6 7 # define GET_VAR(V,A) \ … … 20 21 Vector *xvec, *yvec, *svec, *ovec; 21 22 char *c, name[16]; 23 24 if ((N = get_argument (argc, argv, "-apply"))) { 25 remove_argument (N, &argc, argv); 26 int status = vgauss_apply (argc, argv); 27 return status; 28 } 22 29 23 30 Quiet = FALSE; … … 104 111 } 105 112 if (!Quiet) gprint (GP_ERR, "%d iterations\n", i); 113 set_variable ("Chisq", chisq); 114 set_variable ("ChisqNu", chisq / (float) (Npts - Npar)); 106 115 107 116 for (i = 0; i < Npts; i++) { … … 125 134 } 126 135 136 int vgauss_apply (int argc, char **argv) { 137 138 opihi_flt par[4]; 139 Vector *xvec, *ovec; 140 char *c; 141 142 // NOTE: -apply has already been stripped by vgauss call 143 if (argc != 3) { 144 gprint (GP_ERR, "USAGE: vgauss -apply <x> <out>\n"); 145 return (FALSE); 146 } 147 148 if ((xvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE); 149 if ((ovec = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE); 150 151 CastVector (xvec, OPIHI_FLT); 152 153 GET_VAR (par[0], "C0"); 154 GET_VAR (par[1], "C1"); 155 GET_VAR (par[2], "C2"); 156 GET_VAR (par[3], "C3"); 157 int Npar = 4; 158 159 int Npts = xvec[0].Nelements; 160 ResetVector (ovec, OPIHI_FLT, Npts); 161 162 for (int i = 0; i < Npts; i++) { 163 ovec[0].elements.Flt[i] = fgaussOD (xvec[0].elements.Flt[i], par, Npar, NULL); 164 } 165 ovec[0].Nelements = Npts; 166 167 return TRUE; 168 } 169 127 170 /* pars: x_o, sigma, I, back */ 128 171 opihi_flt fgaussOD (opihi_flt x, opihi_flt *par, int Npar, opihi_flt *dpar) { … … 135 178 f = par[2]*r + par[3]; 136 179 137 dpar[0] = par[2]*r*z/par[1]; 138 dpar[1] = par[2]*r*z*z/par[1]; 139 dpar[2] = r; 140 dpar[3] = 1; 180 if (dpar) { 181 dpar[0] = par[2]*r*z/par[1]; 182 dpar[1] = par[2]*r*z*z/par[1]; 183 dpar[2] = r; 184 dpar[3] = 1; 185 } 141 186 142 187 return (f);
Note:
See TracChangeset
for help on using the changeset viewer.
