Overload List
| # | Signature | Description |
|---|---|---|
| 1 | procedure IirFilter(const Src: TCplx; out Dst: TCplx; var IIRState: TIirState); | Filter data with an IIR filter. |
| 2 | procedure IirFilter(const Src: TSCplx; out Dst: TSCplx; var IIRState: TIirState); | |
| 3 | procedure IirFilter(const Data: TVec; const Num: TVec; const Den: TVec; LinearPhase: Boolean); | Filter Data and place the result back in Data. |
| 4 | procedure IirFilter(const Src: TVec; const Dst: TVec; var IIRState: TIirState); | Filter data with an IIR filter. |
| 5 | procedure IirFilter(const Data: TVec; var IIRState: TIirState; LinearPhase: Boolean); | Filter data with an IIR filter. |
| 6 | procedure IirFilter(Src: Double; out Dst: Double; var IIRState: TIirState); | Filter data with an IIR filter. |
| 7 | procedure IirFilter(Src: Single; out Dst: Single; var IIRState: TIirState); |
Overload 1: procedure IirFilter(const Src: TCplx; out Dst: TCplx; var IIRState: TIirState);
Filter data with an IIR filter.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TCplx | |
| 2 | Dst | TCplx | |
| 3 | IIRState | TIirState |
Result: stored in self (calling object)
Filters sample Src and places complex output of the filter in Dst.
Overload 2: procedure IirFilter(const Src: TSCplx; out Dst: TSCplx; var IIRState: TIirState);
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TSCplx | |
| 2 | Dst | TSCplx | |
| 3 | IIRState | TIirState |
Result: stored in self (calling object)
Overload 3: procedure IirFilter(const Data: TVec; const Num: TVec; const Den: TVec; LinearPhase: Boolean);
Filter Data and place the result back in Data.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Data | TVec | |
| 2 | Num | TVec | |
| 3 | Den | TVec | |
| 4 | LinearPhase | Boolean |
Result: stored in self (calling object)
The Iir filter is defined with a transfer function. Num is numerator and Den is denominator. Set LinearPhase to True to double filter attenuation and ensure no phase distortion and no phase delay (except for the initial transition regions).
Overload 4: procedure IirFilter(const Src: TVec; const Dst: TVec; var IIRState: TIirState);
Filter data with an IIR filter.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | |
| 2 | Dst | TVec | |
| 3 | IIRState | TIirState |
Result: stored in self (calling object)
Filter data in Src and place the result in Dst. IirState must be initialized with a call to IirInit.
Note
Use this routine for filtering of streaming data.
uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit, IIRFilters;
procedure TForm42.Button1Click(Sender: TObject);
var b,c,Response,Response1,num,den: Vector;
State: TIirState;
n,i: integer;
begin
Tone(b,300,6/300,0,1);
// Alternative: try gaussian noise
// b := RandGauss(300);
c.Size(b);
ChebyshevIFilter(6,0.2,[0.6],ftLowpass,false,num,den);
FillChar(State,SizeOf(State),0);
IirInit(num,den,State);
try
//Alternative 1, IIR streaming
n := 10;
for i := 0 to (b.Length div n) - 1 do
begin
b.SetSubRange(i*n,n);
c.SetSubRange(i*n,n);
IirFilter(b,c,State);
end;
//Alternative 2 single block filter (does not require TIirState)
// c.Copy(b);
// IirFilter(c,num,den,True);
//Alternative 3 single block
// c.Copy(b);
// IirFilter(c,State);
c.SetFullRange;
b.SetFullRange;
DrawIt([b,c],['Original signal','Filtered signal']);
FrequencyResponse(b,nil,Response,8,True,wtHanning);
FrequencyResponse(c,nil,Response1,8,True,wtHanning);
DrawIt([Response,Response1],['Orig. signal','Filtered']);
finally
IirFree(State);
end;
end;
Overload 5: procedure IirFilter(const Data: TVec; var IIRState: TIirState; LinearPhase: Boolean);
Filter data with an IIR filter.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Data | TVec | |
| 2 | IIRState | TIirState | |
| 3 | LinearPhase | Boolean |
Result: stored in self (calling object)
Filter Data and place the result back in Data. Use this routine for filtering of non-consecutive blocks of data. Set LinearPhase to True to double filter attenuation and ensure no phase distortion and no phase delay.
Overload 6: procedure IirFilter(Src: Double; out Dst: Double; var IIRState: TIirState);
Filter data with an IIR filter.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | Double | scalar |
| 2 | Dst | Double | |
| 3 | IIRState | TIirState |
Result: stored in self (calling object)
Filters sample Src and places real valued output of the filter in Dst.
Overload 7: procedure IirFilter(Src: Single; out Dst: Single; var IIRState: TIirState);
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | Single | scalar |
| 2 | Dst | Single | |
| 3 | IIRState | TIirState |
Result: stored in self (calling object)