- 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 19: License 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. See also see Smooth.