The SDL Component Suite is an industry leading collection of components supporting scientific and engineering computing. Please visit the SDL Web site for more information....


Declaration:procedure PolynomialSmooth (SourceVec: TVector; FirstElem,LastElem: integer; DestVec: TVector; WindowSize: integer);

The procedure PolynomialSmooth smoothes a series of data by fitting a second order polynomial to it. The number of data points used for estimating the smoothed data can be adjusted by setting the parameter WindowSize. It may take values between 5 and 25 and has to be an odd number; any invalid number triggers an ESDLMath2Error exception (see below). The source data series is contained in the vector SourceVec. You may restrict the range of data to be submitted to the smoothing algorithm by setting the parameters FirstElem, and LastElem properly. The resulting smoothed data series is stored in the vector DestVec (starting at position 1). Please note that the first, and the last (WindowSize div 2) elements cannot be smoothed and are replaced by the nearest available smoothed value.

PolynomialSmooth may create the following exceptions of type ESDLMath2Error:

'PolynomialSmooth: either SourceVec or DestVec is undefined'
'PolynomialSmooth: specified range for smoothing is smaller than the length of the polynomial'
'PolynomialSmooth: length of polynomial is out of range'
'PolynomialSmooth: length of polynomial must be odd'

Note: The algorithm of PolynomialSmooth has been implemented according to the following paper: A. Savitzky, M.J.E. Golay: Anal.Chem. 36 (1964) 1627

Following is an example for smoothing a data series of 185 points. The elements between 30 and 155 are submitted to the smoothing algorithm using a smoothing window size of 25 elements. Note that the first 12 (=WindowSize div 2), and the last 12 elements of the smoothed series are constant.

Last Update: 2023-Feb-06