Low-pass filtering using NEURON's fft() routine
Tool Information (Click on a link to find other Tools with that property)
Tool Type: Analysis; Convolution; Utility;
Simulation Environment: NEURON;
// $Id: readme.txt,v 1.2 2006/01/21 15:48:32 billl Exp $

Low-pass filtering using NEURON's fft() routine

fftilt(src,dest[,cutoff]) // filters src and places result in dest
 // designed for optimally filtering signal at the beginning of the sample
 // in order to do this we place the beginning in the center by reflection around y-axis
 //  (see reflected.gif)
 // note that routine may truncate sample -- may wish to change this to always pad
 //  (search 'alway enlarge')

ancillary routines: 
hanning(vec_size) // see hanning.gif
 // Hanning window used on original time-domain sample
 // drops off to zero at edges so as to avoid discontinuity artifact
 // note that this means that end of signal is unrepresented

blackman(vec_size,fall_off_loc) // see blackman.gif
  // Blackman window used for cutoff of freq in frequency-domain
  // gives gradual fall-off so don't get ringing from sudden cutoff of fft
  // note that fall_off_loc marks the point where window reaches 0
  // this location is calculated from cut-off frequency in fftilt()
  // global blackman_size gives the length of the blackman_window

round() // round off number (or members of vector) to nearest integer

ffilt_test(cutoff[,blackman_size])  // test program test.gif\gref
  // mix freq's of 10 and 50 Hz; filter out above 'cutoff'; display

Please send suggestions/corrections/augmentations/questions to
(NB I am not an engineer and am therefore not liable if you decide to design
your airplane using this code.)
thanks to Larry Eberle for providing the original FORTRAN code