Streamed filtering. A vector with a sine signal is broken down in to smaller pieces and they are filtered one by one.
procedure TForm1.Button1Click(Sender: TObject); var h,b,c: Vector; n,i: integer; State: TFirState; begin SavGolayImpulse(h,15,7); FirInit(h,State); try b := Ramp(300, mvDouble, 0,0.1); c.Size(b); n := 10; for i := 0 to (b.Length div n) - 1 do begin b.SetSubRange(i*n,n); c.SetSubRange(i*n,n); FirFilter(b,c,State); end; b.SetFullRange; c.SetFullRange; DrawIt([b,c],['Filtered data','Original data']); finally FirFree(State); end; end;
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { sVector h,b,c; int n,i; TFirState State; SavGolayImpulse(h,15,7); FirInit(h,State); try { b = Ramp(300, mvDouble0,0.1); c.Size(b); n = 10; for (i = 0; i < (b.Length/n); i++) { FirFilter(b(i*n, i*n+n-1),c(i*n, i*n+n-1),State); } DrawIt(OPENARRAY(TVec*,(b,c)),OPENARRAY(AnsiString,("Filtered data","Original data"))); } __finally { FirFree(State); } }
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
|