Simply AVeraging FILTer for vectors or matrices (works on columns of matrices)
Description: generalized and improved version of SGOLAYFILT(Dat,1,W)
In practice SGOLAYFILT is most frequently used with ORDer 1, because at given filtering frame W the ORDer 1 gives the highest smoothening of the Data. Advantages of SAVFILT(Dat,W) in comparison to SGOLAYFILT(Dat,1,W):
1. Better results at the rands of the Data: instead of arbitrary padding the Data with zeros, a possibly wide frame is used at the rands.
2. SAVFILT accepts arbitrary frames W>1, not only odd ones, as SGOLAYFILT does. The results of filtering white noise with any W>1 leads to almost by the factor of sqrt(W) smaller standard deviation of the filtered data in comparison to raw data. This feature is especially helpful in the case of filtering periodical data with an arbitrary period.
3. With odd W SAVFILT works more than 2 times faster than SGOLAYFILT, and about at the same speed in the case of nonodd W (can be made equally fast and with exact efficiency sqrt(W)). The Efficiency of any low-pass filter is defined as: E=std(Dat)/std(DatF), Dat being white gaussian noise and DatF is filtered Dat Call:
Dat = Data to be filtered, a matrix N*M, any([N,M]>1)
E= filter efficiency, abs(E)>1
% W or E are used interchangeably. If nargin>2, W-value will be replaced by W=abs(E^2)
DatF = Filtered Data
V.Pastushenko, 22-nd July 1993, J.Kepler Univ. of Linz, Austria
Vassili Pastushenko (2021). SAVFILT (https://www.mathworks.com/matlabcentral/fileexchange/5536-savfilt), MATLAB Central File Exchange. Retrieved .
You can accelerate the processing by ~30%, if you replace the lines:
w1 = transpose(1:2:W);
iw1 = 1 ./ w1;
iw1C = iw1(:, ones(1, C));
BEGIN = DatF(w1, :);
ENDIN = cumsum(Dat(R:-1:R-W+1, :));
DatF(HW+2:R-HW-1, :) = (DatF(W+1:R-1, :) -
DatF(1:R-W-1, :)) .* (1 / W);
DatF(1:HW+1, :) = BEGIN .* iw1C;
DatF(R:-1:R-HW, :) = ENDIN(w1, :) .* iw1C;
Kind regards, Jan
Worked very well indeed!
I like Savitzky-Golay filter for smoothing and differentiation.
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!