You are here: Symbol Reference > SignalUtils Namespace > Functions > SignalUtils.SavGolayImpulse Function
DSP Master VCL
ContentsIndex
Example 2

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.