IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7160


Ignore:
Timestamp:
May 22, 2006, 12:30:04 PM (20 years ago)
Author:
Paul Price
Message:

Increasing number of data points, using sigma instead of multiplier
within exponent, better noise model.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/math/tst_psMinimizeLMM.c

    r7130 r7160  
    1313#define NUM_ITERATIONS 100
    1414#define ERR_TOL 1e-6
    15 #define NUM_DATA_POINTS 100
     15#define NUM_DATA_POINTS 300
    1616#define NUM_PARAMS 3
    1717float expectedParm[NUM_PARAMS];
     
    2323{
    2424    return params->data.F32[0] *
    25            expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]))) +
     25           expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1]))) +
    2626           params->data.F32[2];
    2727}
     
    3232                )
    3333{
    34     deriv->data.F32[0] = expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1])));
    35     deriv->data.F32[1] = - params->data.F32[0] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1])) *
    36                          expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1])));
     34    deriv->data.F32[0] = expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1])));
     35    deriv->data.F32[1] = params->data.F32[0] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1])) / params->data.F32[1] / params->data.F32[1] / params->data.F32[1] * expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1])));
    3736    deriv->data.F32[2] = 1.0;
    3837}
     
    8079
    8180    trueParams->data.F32[0] = 100.0;    // Normalisation
    82     trueParams->data.F32[1] = 0.1;      // Shape
     81    trueParams->data.F32[1] = 3.0;      // Width
    8382    trueParams->data.F32[2] = 10.0;     // Background
    8483
     
    9493        x->data.F32[1] = 10.0 * psRandomUniform(rng) - 5.0;
    9594        ordinates->data[i] = x;
    96         coordinates->data.F32[i] = function(params, x) + 0.1 * psRandomGaussian(rng); // Add some noise
     95        // Add some noise
     96        coordinates->data.F32[i] = function(params, x) + 0.1 * (2.0 * psRandomGaussian(rng) - 1.0);
    9797        errors->data.F32[i] = 0.1;
    9898        printf("Data %ld: (%f, %f) --> %f\n", i, x->data.F32[0], x->data.F32[1], coordinates->data.F32[i]);
Note: See TracChangeset for help on using the changeset viewer.