Changeset 1440 for trunk/psLib/src/math/psMinimize.c
- Timestamp:
- Aug 9, 2004, 1:34:58 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psMinimize.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMinimize.c
r1407 r1440 10 10 * @author George Gusciora, MHPCC 11 11 * 12 * @version $Revision: 1.2 8$ $Name: not supported by cvs2svn $13 * @date $Date: 2004-08-0 7 00:06:06$12 * @version $Revision: 1.29 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-08-09 23:34:57 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 99 99 size_t n; // Number of data points points in domain. 100 100 int paramCount; // Number of non-masked parameters. 101 psVector *restrict initialGuess;102 const psImage *restrict domain;103 const psVector *restrict data;104 const psVector *restrict errors;105 const psVector *restrict paramMask;106 float (*evalModel) (const psVector *, const psVector *);107 float (*d_evalModel) (const psVector *, const psVector *, int);101 psVector* restrict initialGuess; 102 const psImage* restrict domain; 103 const psVector* restrict data; 104 const psVector* restrict errors; 105 const psVector* restrict paramMask; 106 float (*evalModel) (const psVector* , const psVector* ); 107 float (*d_evalModel) (const psVector* , const psVector* , int); 108 108 } 109 109 psMinChi2Data; … … 112 112 { 113 113 int paramCount; // Number of non-masked parameters. 114 psVector *restrict initialGuess;115 const psVector *restrict coord;116 const psVector *restrict paramMask;117 float (*evalModel) (const psVector *, const psVector *);118 float (*d_evalModel) (const psVector *, const psVector *, int);114 psVector* restrict initialGuess; 115 const psVector* restrict coord; 116 const psVector* restrict paramMask; 117 float (*evalModel) (const psVector* , const psVector* ); 118 float (*d_evalModel) (const psVector* , const psVector* , int); 119 119 } 120 120 psMinimizeData; … … 162 162 int j; // Loop index variable. 163 163 float tmpf; // Temporary floating point variable. 164 const psVector *restrict coord = ((psMinimizeData *) funcData)->coord;165 const psVector *restrict mask = ((psMinimizeData *) funcData)->paramMask;166 psVector *restrict initialGuess = ((psMinimizeData *) funcData)->initialGuess;167 float (*evalModel) (const psVector *, const psVector *) = ((psMinimizeData *) funcData)->evalModel;168 psVector *inputParameterList = NULL;164 const psVector* restrict coord = ((psMinimizeData* ) funcData)->coord; 165 const psVector* restrict mask = ((psMinimizeData* ) funcData)->paramMask; 166 psVector* restrict initialGuess = ((psMinimizeData* ) funcData)->initialGuess; 167 float (*evalModel) (const psVector* , const psVector* ) = ((psMinimizeData* ) funcData)->evalModel; 168 psVector* inputParameterList = NULL; 169 169 170 170 // The GSL routines will call this function with the masked parameters … … 216 216 int j; // Loop index variable. 217 217 float tmpf; // Temporary floating point variable. 218 const psVector *restrict coord = ((psMinimizeData *) funcData)->coord;219 const psVector *restrict mask = ((psMinimizeData *) funcData)->paramMask;220 psVector *restrict initialGuess = ((psMinimizeData *) funcData)->initialGuess;221 float (*d_evalModel) (const psVector *, const psVector *, int) =222 ((psMinimizeData *) funcData)->d_evalModel;223 psVector *inputParameterList = NULL;218 const psVector* restrict coord = ((psMinimizeData* ) funcData)->coord; 219 const psVector* restrict mask = ((psMinimizeData* ) funcData)->paramMask; 220 psVector* restrict initialGuess = ((psMinimizeData* ) funcData)->initialGuess; 221 float (*d_evalModel) (const psVector* , const psVector* , int) = 222 ((psMinimizeData* ) funcData)->d_evalModel; 223 psVector* inputParameterList = NULL; 224 224 225 225 // The GSL routines will call this function with the masked parameters … … 293 293 int j; // Loop index variable. 294 294 float tmpf; // Temporary floating point variable. 295 const psImage *restrict domain = ((psMinChi2Data *) funcData)->domain;296 const psVector *restrict data = ((psMinChi2Data *) funcData)->data;297 const psVector *restrict errors = ((psMinChi2Data *) funcData)->errors;298 const psVector *restrict mask = ((psMinChi2Data *) funcData)->paramMask;299 psVector *restrict initialGuess = ((psMinChi2Data *) funcData)->initialGuess;300 float (*evalModel) (const psVector *, const psVector *) = ((psMinChi2Data *) funcData)->evalModel;301 psVector *inputParameterList = NULL;302 psVector *tmpVecPtr = NULL;295 const psImage* restrict domain = ((psMinChi2Data* ) funcData)->domain; 296 const psVector* restrict data = ((psMinChi2Data* ) funcData)->data; 297 const psVector* restrict errors = ((psMinChi2Data* ) funcData)->errors; 298 const psVector* restrict mask = ((psMinChi2Data* ) funcData)->paramMask; 299 psVector* restrict initialGuess = ((psMinChi2Data* ) funcData)->initialGuess; 300 float (*evalModel) (const psVector* , const psVector* ) = ((psMinChi2Data* ) funcData)->evalModel; 301 psVector* inputParameterList = NULL; 302 psVector* tmpVecPtr = NULL; 303 303 304 304 tmpVecPtr = psVectorAlloc(domain->numCols, PS_TYPE_F32); … … 360 360 int p_psMinChi2FuncDeriv(const gsl_vector * params, void *funcData, gsl_matrix * J) 361 361 { 362 const psImage *restrict domain = ((psMinChi2Data *) funcData)->domain;363 const psVector *restrict errors = ((psMinChi2Data *) funcData)->errors;364 const psVector *restrict mask = ((psMinChi2Data *) funcData)->paramMask;365 psVector *restrict initialGuess = ((psMinChi2Data *) funcData)->initialGuess;366 psVector *inputParameterList = NULL;367 psVector *tmpVecPtr = NULL;368 float (*d_evalModel) (const psVector *, const psVector *, int) =369 ((psMinChi2Data *) funcData)->d_evalModel;362 const psImage* restrict domain = ((psMinChi2Data* ) funcData)->domain; 363 const psVector* restrict errors = ((psMinChi2Data* ) funcData)->errors; 364 const psVector* restrict mask = ((psMinChi2Data* ) funcData)->paramMask; 365 psVector* restrict initialGuess = ((psMinChi2Data* ) funcData)->initialGuess; 366 psVector* inputParameterList = NULL; 367 psVector* tmpVecPtr = NULL; 368 float (*d_evalModel) (const psVector* , const psVector* , int) = 369 ((psMinChi2Data* ) funcData)->d_evalModel; 370 370 371 371 size_t i; … … 426 426 returned as a psVector sums. 427 427 *****************************************************************************/ 428 void p_psBuildSums1D(double x, int polyOrder, psVector * sums)428 void p_psBuildSums1D(double x, int polyOrder, psVector* sums) 429 429 { 430 430 int i = 0; … … 442 442 values of the vector will be scaled uniformly between -1.0 and 1.0. 443 443 *****************************************************************************/ 444 psVector *psBuildImageScalingFactors(int x)444 psVector* psBuildImageScalingFactors(int x) 445 445 { 446 446 int i = 0; // loop index variable. 447 psVector *imageScalingFactors = NULL;447 psVector* imageScalingFactors = NULL; 448 448 449 449 imageScalingFactors = psVectorAlloc(x, PS_TYPE_F32); … … 556 556 parameters of that function such that the ... 557 557 *****************************************************************************/ 558 psVector *psMinimize(psVector* restrict initialGuess,559 float (*myFunction) (const psVector * restrict, const psVector* restrict),560 float (*myFunctionDeriv) (const psVector * restrict, const psVector* restrict, int),561 const psVector * restrict coord, const psVector* restrict paramMask)558 psVector* psMinimize(psVector* restrict initialGuess, 559 float (*myFunction) (const psVector* restrict, const psVector* restrict), 560 float (*myFunctionDeriv) (const psVector* restrict, const psVector* restrict, int), 561 const psVector* restrict coord, const psVector* restrict paramMask) 562 562 { 563 563 int status; … … 664 664 such that they best fit the supplied data points. 665 665 *****************************************************************************/ 666 psVector *psMinimizeChi2(float (*evalModel) (const psVector * restrict, const psVector* restrict),667 float (*DevalModel) (const psVector * restrict, const psVector* restrict, int),668 const psImage * restrict domain,669 const psVector * restrict data,670 const psVector * restrict errors,671 psVector * restrict initialGuess, const psVector* restrict paramMask, float *chiSq)666 psVector* psMinimizeChi2(float (*evalModel) (const psVector* restrict, const psVector* restrict), 667 float (*DevalModel) (const psVector* restrict, const psVector* restrict, int), 668 const psImage* restrict domain, 669 const psVector* restrict data, 670 const psVector* restrict errors, 671 psVector* restrict initialGuess, const psVector* restrict paramMask, float *chiSq) 672 672 { 673 673 int numData = domain->numRows; // Number of data points … … 847 847 NOTE: yErr is currently ignored. 848 848 *****************************************************************************/ 849 psPolynomial1D *psVectorFitPolynomial1D(psPolynomial1D* myPoly,850 const psVector * restrict x,851 const psVector * restrict y, const psVector* restrict yErr)849 psPolynomial1D* psVectorFitPolynomial1D(psPolynomial1D* myPoly, 850 const psVector* restrict x, 851 const psVector* restrict y, const psVector* restrict yErr) 852 852 { 853 853 int polyOrder = myPoly->n; 854 psImage *A = NULL;855 psImage *ALUD = NULL;856 psVector *B = NULL;857 psVector *outPerm = NULL;858 psVector *X = NULL; // NOTE: do we need this?859 psVector *coeffs = NULL;854 psImage* A = NULL; 855 psImage* ALUD = NULL; 856 psVector* B = NULL; 857 psVector* outPerm = NULL; 858 psVector* X = NULL; // NOTE: do we need this? 859 psVector* coeffs = NULL; 860 860 int i = 0; 861 861 int j = 0; 862 862 int k = 0; 863 psVector *xSums = NULL;863 psVector* xSums = NULL; 864 864 865 865 // printf("psVectorFitPolynomial1D()\n");
Note:
See TracChangeset
for help on using the changeset viewer.
