NCL Home > Documentation > Functions > General applied math

# 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

nwt

A scalar indicating the total number of weights (can be odd or even).

sigma

A scalar indicating the standard deviation to be used. Generally, this is set to 1.0.

option

A 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.

## 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 do
```
The 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
```