Chapters:
1: Introduction
2: Simple example
3: Invocation
4: Finer Control
5: X-Y Plots
6: Contour Plots
7: Image Plots
8: Examples
9: Gri Commands
10: Programming
11: Environment
12: Emacs Mode
13: History
14: Installation
15: Gri Bugs
16: Test Suite
17: Gri in Press
18: Acknowledgments

Indices:
Concepts
Commands
Variables

### 9.3.11: ``filter`'

• ``filter column x|y|z|u|v|weight recursively a[0] a[1] ... b[0] b[1] ...`' Filter indicated column, using a two-pass recursive filter. The first pass runs from the start to the end, while the second pass runs from the end to the start; in this way, the phase shift inherent in this type of filter is removed entirely. The coefficients are used in the following formula (demonstrated on the ``x`' column):

 ``` x_new[i] = b[0] * x[i] \ + b[1] * x[i-1] \ + b[2] * x[i-2] \ + ... \ - a[1] * x_new[i-1] \ - a[2] * x_new[i-2] \ - ... ```

Thus, for example, setting ``a[i]`' = 0 results in a simple backwards-looking moving-average filter applied in two passes. The real power of this type of filter, however, comes when non-zero ``a[i]`' coefficients are given, thus adding recursion (i.e., ``x_new[i]`' depends on ``x_new[i-...]`'). See any standard reference on digital filters for an explanation. You might find that the Matlab command ``butter`' an easy way to design filter coefficients. Here are some examples:

 ``` # Filter x column with simple 2-point moving # average. (This slurs into a 3-point moving # average, in effect, since the filter is run # forwards and then backwards.) filter column x recursively 0 0 0.5 0.5 # Use filter designed with the Matlab # command butter(2,0.1), which creates a # 2nd order lowpass butterworth filter # with a cutoff frequency of 0.1 # (in units which have a frequency # of 1 corresponding to one-half the # sampling rate). filter column x recursively \ 1 -1.561 0.6414 \ 0.0201 0.0402 0.0201 ```

• ``filter grid rows|columns recursively a[0] a[1] ... b[0] b[1] ...`'

Apply recursive filter (see ``filter column ... recursively`' for meaning of this filter operation) to the individual rows or columns of the grid data. For example, the command ``filter grid columns recursively 0 0 0.5 0.5`' applies a 2-point moving average filter across the columns, smoothing the grid in the x-direction.

• ``filter image highpass`' Remove low-wavenumber components from image (ie, sharpen edges). Do this by subtracting a Laplacian smoothed version of the image.

• ``filter image lowpass`' Remove high-wavenumber components from image (ie, smooth shapes). Do this by Laplacian smoothing.