Changeset 13983 for trunk/psphot/src/psphotModelWithPSF.c
- Timestamp:
- Jun 26, 2007, 9:43:28 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotModelWithPSF.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotModelWithPSF.c
r13976 r13983 1 1 # include "psphot.h" 2 3 // XXX elevate the p_psMinLM_ functions to psMinLM_...4 5 2 6 3 bool psphotModelWithPSF_LMM ( … … 69 66 70 67 // set a new guess for Alpha, Beta, Params 71 if (!p _psMinLM_GuessABP(Alpha, Beta, Params, alpha, beta, params, paramMask, checkLimits, lambda)) {68 if (!psMinLM_GuessABP(Alpha, Beta, Params, alpha, beta, params, paramMask, checkLimits, lambda)) { 72 69 min->iter ++; 73 70 lambda *= 10.0; … … 76 73 77 74 // measure linear model prediction 78 psF32 dLinear = p _psMinLM_dLinear(Beta, beta, lambda);75 psF32 dLinear = psMinLM_dLinear(Beta, beta, lambda); 79 76 80 77 // dump some useful info if trace is defined … … 88 85 89 86 // calculate Chisq for new guess, update Alpha & Beta 90 Chisq = p _psMinLM_SetABX(Alpha, Beta, Params, paramMask, source, func);87 Chisq = psphotModelWithPSF_SetABX(Alpha, Beta, Params, paramMask, source, psf, func); 91 88 if (isnan(Chisq)) { 92 89 min->iter ++; … … 112 109 /* if (Chisq < min->value) { */ 113 110 if (rho > 0.0) { 114 min->lastDelta = (min->value - Chisq) / ( dy->n- params->n);111 min->lastDelta = (min->value - Chisq) / (source->pixels->numCols*source->pixels->numRows - params->n); 115 112 min->value = Chisq; 116 113 alpha = psImageCopy(alpha, Alpha, PS_TYPE_F32); … … 127 124 // construct & return the covariance matrix (if requested) 128 125 if (covar != NULL) { 129 if (!p _psMinLM_GuessABP(covar, Beta, Params, alpha, beta, params, paramMask, NULL, 0.0)) {126 if (!psMinLM_GuessABP(covar, Beta, Params, alpha, beta, params, paramMask, NULL, 0.0)) { 130 127 psTrace ("psLib.math", 5, "failure to calculate covariance matrix\n"); 131 128 } … … 172 169 } 173 170 174 psF32 chisq;175 psF32 delta;176 psF32 weight;177 psF32 ymodel;178 171 psVector *deriv = psVectorAlloc(params->n, PS_TYPE_F32); 179 172 … … 191 184 192 185 // fill in the coordinate and value entries 193 nPix = 0;194 186 for (psS32 i = 0; i < source->pixels->numRows; i++) { 195 187 for (psS32 j = 0; j < source->pixels->numCols; j++) { … … 239 231 psImageInit (alpha, 0.0); 240 232 psVectorInit (beta, 0.0); 241 chisq = 0.0;233 float chisq = 0.0; 242 234 243 235 for (psS32 i = 0; i < source->pixels->numRows; i++) { … … 257 249 } 258 250 259 ymodel = modelConv->data.F32[i][j];260 yweight = 1.0 / source->weight->data.F32[i][j];261 delta = ymodel - source->pixels->data.F32[i][j];262 263 chisq += PS_SQR(delta) * var;251 float ymodel = modelConv->data.F32[i][j]; 252 float yweight = 1.0 / source->weight->data.F32[i][j]; 253 float delta = ymodel - source->pixels->data.F32[i][j]; 254 255 chisq += PS_SQR(delta) * yweight; 264 256 265 257 if (isnan(delta)) … … 273 265 } 274 266 psImage *dmodel = dmodelsConv->data[n1]; 275 weight = dmodel->data.F32[i][j] * yweight;267 float weight = dmodel->data.F32[i][j] * yweight; 276 268 for (psS32 n2 = 0; n2 <= n1; n2++) { 277 269 if ((paramMask != NULL) && (paramMask->data.U8[n2])) { … … 281 273 alpha->data.F32[n1][n2] += weight * dmodel->data.F32[i][j]; 282 274 } 283 beta->data.F32[ jn] += weight * delta;275 beta->data.F32[n1] += weight * delta; 284 276 } 285 277 }
Note:
See TracChangeset
for help on using the changeset viewer.
