
filwgts_normal
Calculates one-dimensional filter weights based upon the normal (gaussian) distribution.
Prototype
function filwgts_normal ( nwt [1] : integer, sigma [1] : numeric, option [1] : integer ) return_val [nwt] : float or double
Arguments
nwtA scalar indicating the total number of weights (can be odd or even).
sigmaA scalar indicating the standard deviation to be used. Generally, this is set to 1.0.
optionA scalar that is currently not used.
Return value
An array of length nwt is returned. The type will be double if sigma is double, and float otherwise.
Description
Given a user specified number of weights, this function returns a symmetric set of weights.
Setting sigma < 1.0 will result in even more weight being given to the central values than sigma = 1.0.
The derived weights can be input to the function wgt_runave to apply the filter to a series of data values. Usually, the kopt=0 is chosen for wgt_runave when applying the weights to, say, a time series.
See Also
Examples
Example 1
This example generates the gaussian (normal) weights for several different values of nwt and with sigma = 1.0:
NWGT = (/ 3, 7, 10 /) do n=0,dimsizes(NWGT)-1 nwt = NWGT(n) w = filwgts_normal (nwt, 1.0, 0) print ("-----nwt="+nwt+"------------") print ("genGauWgts: nwt="+w) delete (w) end doThe above script yields:
(0) -----nwt=3------------ (0) genGauWgts: nwt=0.274069 (1) genGauWgts: nwt=0.451863 (2) genGauWgts: nwt=0.274069 (0) -----nwt=7------------ (0) genGauWgts: nwt=0.106289 (1) genGauWgts: nwt=0.140321 (2) genGauWgts: nwt=0.16577 (3) genGauWgts: nwt=0.17524 (4) genGauWgts: nwt=0.16577 (5) genGauWgts: nwt=0.140321 (6) genGauWgts: nwt=0.106289 (0) -----nwt=10----------- (0) genGauWgts: nwt=0.0732114 (1) genGauWgts: nwt=0.0892001 (2) genGauWgts: nwt=0.103444 (3) genGauWgts: nwt=0.114182 (4) genGauWgts: nwt=0.119962 (5) genGauWgts: nwt=0.119962 (6) genGauWgts: nwt=0.114182 (7) genGauWgts: nwt=0.103444 (8) genGauWgts: nwt=0.0892001 (9) genGauWgts: nwt=0.0732114
Example 2
This example generates the gaussian (normal) weights with sigma=0.5 and nwt=3 and 7:
NWGT = (/ 3, 7 /) do n=0,dimsizes(NWGT)-1 nwt = NWGT(n) w = filwgts_normal (nwt, 0.5, 0) print ("-----nwt="+nwt+"------------") print ("genGauWgts: nwt="+w) delete (w) end do
The above yields:
(0) ---------------------- (0) genGauWgts: nwt=0.106507 (1) genGauWgts: nwt=0.786986 (2) genGauWgts: nwt=0.106507 (0) ---------------------- (0) genGauWgts: nwt=0.0366328 (1) genGauWgts: nwt=0.111281 (2) genGauWgts: nwt=0.216745 (3) genGauWgts: nwt=0.270682 (4) genGauWgts: nwt=0.216745 (5) genGauWgts: nwt=0.111281 (6) genGauWgts: nwt=0.0366328