IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 26, 2004, 11:25:59 AM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/dataManip/tst_psMinimize06.c

    r1992 r2197  
    7474}
    7575
    76 
    77 int main()
     76psVector *myFunc2(psImage *myDeriv,
     77                  psVector *myParams,
     78                  psArray *myCoords)
     79{
     80    psVector *sum = psVectorAlloc(myCoords->n, PS_TYPE_F32);
     81    int i;
     82    int j;
     83
     84
     85    if (myDeriv == NULL) {
     86        myDeriv = psImageAlloc(myParams->n, myCoords->n, PS_TYPE_F32);
     87        psError(__func__, "myDeriv is NULL.\n");
     88    }
     89
     90    for (i=0;i<N;i++) {
     91        sum->data.F32[i] = MIN_VALUE;
     92        for (j=0;j<NUM_PARAMS;j++) {
     93            sum->data.F32[i]+= (myParams->data.F32[j] - expectedParm[j]) *
     94                               (myParams->data.F32[j] - expectedParm[j]);
     95
     96            myDeriv->data.F32[i][j] = (2.0 * myParams->data.F32[j]) -
     97                                      (2.0 * expectedParm[j]);
     98        }
     99    }
     100
     101    return(sum);
     102}
     103
     104int t01()
     105{
     106    int currentId = psMemGetId();
     107    int memLeaks = 0;
     108    int i = 0;
     109    psArray *myCoords;
     110    psVector *myParams;
     111    psImage *myCovar;
     112    psMinimization *min;
     113    psVector *y;
     114
     115    psTraceSetLevel(".psLib", 0);
     116    /**************************************************************************
     117     *************************************************************************/
     118    min = psMinimizationAlloc(NUM_ITERATIONS, ERR_TOL);
     119    myCovar = psImageAlloc(NUM_PARAMS, NUM_PARAMS, PS_TYPE_F32);
     120    myParams = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32);
     121    myCoords = psArrayAlloc(N);
     122    y = psVectorAlloc(N, PS_TYPE_F32);
     123
     124    for (i=0;i<N;i++) {
     125        myCoords->data[i] = (psPTR *) psVectorAlloc(2, PS_TYPE_F32);
     126        ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
     127        ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
     128        y->data.F32[i] = (float) i;
     129    }
     130    for (i=0;i<NUM_PARAMS;i++) {
     131        expectedParm[i] = 2.42 + (float) (2 * i);
     132        myParams->data.F32[i] = (float) i;
     133        myParams->data.F32[i] = expectedParm[i] * 1.3;
     134        myParams->data.F32[i] = (float) (5 + i);
     135        myParams->data.F32[i] = 0.0;
     136    }
     137
     138    psMyMinimizeLMChi2(min,
     139                       myCovar,
     140                       myParams,
     141                       NULL,
     142                       myCoords,
     143                       y,
     144                       NULL,
     145                       (psMyMinimizeLMChi2Func) myFunc2);
     146
     147    printf("\nThe chi-squared is %f\n", min->value);
     148    for (i=0;i<NUM_PARAMS;i++) {
     149        printf("Parameter %d at the minimum is %f (expected: %f)\n", i,
     150               myParams->data.F32[i], expectedParm[i]);
     151    }
     152
     153    psFree(min);
     154    psFree(myCovar);
     155    psFree(myParams);
     156    psFree(myCoords);
     157    psFree(y);
     158
     159    psMemCheckCorruption(1);
     160    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
     161    if (0 != memLeaks) {
     162        psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
     163    }
     164    return (!testStatus);
     165}
     166
     167int t02()
    78168{
    79169    int currentId = psMemGetId();
     
    85175    psImage *myCovar;
    86176    psMinimization *min;
    87     psVector *x = psVectorAlloc(N, PS_TYPE_F32);
    88177    psVector *y = psVectorAlloc(N, PS_TYPE_F32);
    89178
    90179    psTraceSetLevel(".psLib", 0);
     180    t02();
    91181    /**************************************************************************
    92182     *************************************************************************/
     
    101191        ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
    102192        ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
    103         x->data.F32[i] = (float) i;
    104193        y->data.F32[i] = (float) i;
    105194    }
     
    131220    psFree(myParamMask);
    132221    psFree(min);
    133     psFree(x);
    134222    psFree(y);
    135223    psFree(myCovar);
     
    142230    return (!testStatus);
    143231}
     232
     233int main()
     234{
     235    t01();
     236    //    t02();
     237}
Note: See TracChangeset for help on using the changeset viewer.