DewDSPMasterNET
MovingAverageFilter Routine
Summary
Filter data with a moving average filter.

Unit
SignalUtils

Declaration
Procedure MovingAverageFilter(Data: TVec; MaskSize: integer; DataIndex: integer = 0; Len: integer = -1);

Description
Applies moving average filter to Data from DataIndex to DataIndex+Len. Set Len to -1 to use the full Data length. MaskSize defines the length of the filter in samples. This MovingAverageFilter routine can be used to filter a block of data (not for streaming).
Categories
FIR filters
 See Also 
MovingAverageImpulse 
FirFilter 
KaiserImpulse 
RemezImpulse 

Example 1

Moving average filter applied to a sine signal.
uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit,OptimalFir; procedure TForm1.Button1Click(Sender: TObject); var b,c: Vector; begin Tone(b,300,5/300,0,1); c.Copy(b); MovingAverageFilter(b,20); DrawIt([c,b],['Unfiltered','Filtered']); end;
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Vector b,c; Tone(b,300,5.0/300,0,1); c->Copy(b); MovingAverageFilter(b,20); DrawIt(OPENARRAY(TVec*,(c,b)),OPENARRAY(AnsiString,("Unfiltered","Filtered"))); }
using Dew.Math; using Dew.Math.Editors; using Dew.Math.Units; using Dew.Signal; using Dew.Signal.Units; using Dew.Math.Tee; using Dew.Signal.Tee; private void button1_Click(object sender, EventArgs e) { Vector b = new Vector(0); Vector c = new Vector(0); b.Size(300); SignalUtils.Tone(b, 300, 5.0 / 300, 0, 1, false); c.Copy(b); SignalUtils.MovingAverageFilter(b, 20, 0, Math387.MtxVecEOA); //from Index 0 to EndOfArray TeeChart.DrawIt(new TVec[2] { c, b }, new string[2] { "Unfiltered", "Filtered" }, "Moving average filter", false); }

Copyright 2008 Dew Research
http://www.dewresearch.com