DSP Master VCL
|
The resulting H vector contains FIR type impulse response, which can be passed to the FirInit routine.
And excerpt from the Savitzky-Golay demo for a single block filter:
uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit; procedure TForm1.Button1Click(Sender: TObject); var H,D: Matrix; Data, Data1: Vector; Frs,Ord: integer; begin Data.Size(100); Data.RandGauss; Data1.Copy(Data); Frs := 10; if not Odd(Frs) then Inc(Frs); Ord := 5; SavGolayImpulse(H,D,Frs,Ord,nil); //single block processing SavGolayFilter(Data,H); DrawIt([Data,Data1],['Filtered data','Original data']); end;
#include "MtxExpr.hpp" #include "MtxVecEdit.hpp" #include "MtxVecTee.hpp" #include "SignalUtils.hpp" void __fastcall TForm1::BitBtn1Click(TObject *Sender) { sMatrix H,D; sVector Data, Data1; Data.Size(100); Data.RandGauss(); Data1.Copy(Data); int Frs = 10; if ((Frs%2) == 0) Frs++; int Ord = 5; SavGolayImpulse(H,D,Frs,Ord,NULL); //single block processing SavGolayFilter(Data,H); DrawIt(OPENARRAY(TVec*,(Data,Data1)),OPENARRAY(AnsiString,("Filtered data","Original data"))); }
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.
|
What do you think about this topic? Send feedback!
|