>  Docs Center  >  Libraries  >  ASTROLIB  >  POIDEV
Libraries

POIDEV

POIDEV

Name


    POIDEV

Purpose


    Generate a Poisson random deviate

Explanation


    Return an integer random deviate drawn from a Poisson distribution with
    a specified mean. Adapted from procedure of the same name in
    "Numerical Recipes" by Press et al. (1992), Section 7.3
    NOTE: This routine became partially obsolete in V5.0 with the
    introduction of the POISSON keyword to the intrinsic functions
    RANDOMU and RANDOMN. However, POIDEV is still useful for adding
    Poisson noise to an existing image array, for which the coding is much
    simpler than it would be using RANDOMU (see example 1)

Calling Sequence


    result = POIDEV( xm, [ SEED = ] )

Inputs


    xm - numeric scalar, vector or array, specifying the mean(s) of the
          Poisson distribution

Output


    result - Long integer scalar or vector, same size as xm
  OPTIONAL KEYWORD INPUT-OUTPUT:
    SEED - Scalar to be used as the seed for the random distribution.
            For best results, SEED should be a large (>100) integer.
            If SEED is undefined, then its value is taken from the system
            clock (see RANDOMU). The value of SEED is always updated
            upon output. This keyword can be used to have POIDEV give
            identical results on consecutive runs.

Example


    (1) Add Poisson noise to an integral image array, im
              IDL> imnoise = POIDEV( im)
    (2) Verify the expected mean and sigma for an input value of 81
              IDL> p = POIDEV( intarr(10000) + 81) ;Test for 10,000 points
              IDL> print,mean(p),sigma(p)
    Mean and sigma of the 10000 points should be close to 81 and 9

Method


    For small values (< 20) independent exponential deviates are generated
    until their sum exceeds the specified mean, the number of events
    required is returned as the Poisson deviate. For large (> 20) values,
    uniform random variates are compared with a Lorentzian distribution
    function.

Notes


    Negative values in the input array will be returned as zeros.
     

Revision History


      Version 1 Wayne Landsman July 1992
      Added SEED keyword September 1992
      Call intrinsic LNGAMMA function November 1994
      Converted to IDL V5.0 W. Landsman September 1997
      Use COMPLEMENT keyword to WHERE() W. Landsman August 2008



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us