peakml.math.filter
Class SavitzkyGolayFilter

java.lang.Object
  extended by peakml.math.filter.SavitzkyGolayFilter
All Implemented Interfaces:
Filter

public class SavitzkyGolayFilter
extends java.lang.Object
implements Filter

Implementation of the Savitzky-Golay filter taken from Numerical Recipes in C (chapter 14.8, page 650). This filter smoothes the incoming signal by replacing each value in the series with the value obtained from a polynomial fit on the window around the value with size 2n+1.

The Points-enum indicates the possible window-sizes. This has been restricted due to the fact that the algorithm utilizes pre-calculated coefficients. A smaller window-size keeps the signal intact, but removes less noise.


Nested Class Summary
static class SavitzkyGolayFilter.Points
          Fixed definition of the number of data points to use for smoothing.
 
Constructor Summary
SavitzkyGolayFilter(SavitzkyGolayFilter.Points points)
          Standard constructor, which accepts the number of data points to use in for the smoothing filter.
 
Method Summary
 double[] filter(double[] xvals, double[] yvals)
          With this method actual filtering is performed.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SavitzkyGolayFilter

public SavitzkyGolayFilter(SavitzkyGolayFilter.Points points)
Standard constructor, which accepts the number of data points to use in for the smoothing filter.

Parameters:
points - The number of data points to use.
Method Detail

filter

public double[] filter(double[] xvals,
                       double[] yvals)
                throws java.lang.IllegalArgumentException
Description copied from interface: Filter
With this method actual filtering is performed. The xvals and yvals arrays should be of equal length, otherwise an IllegalArgumentException is thrown. The return value is the new yvals array, with smoothed out values. The returned array is of the same size as the x and y value arrays.

Specified by:
filter in interface Filter
Parameters:
xvals - The x-values of the signal.
yvals - The y-values of the signal.
Returns:
The resulting smoothed version of the y-values.
Throws:
java.lang.IllegalArgumentException