Overload List
| # | Signature | Description |
|---|---|---|
| 1 | procedure LowpassToLowpass(const a: TMtx; const b: TVec; const c: TVec; var D: Double; Freq: Double); | Transform a lowpass filter prototype in state space form to a lowpass filter. |
| 2 | procedure LowpassToLowpass(const z: TVec; const p: TVec; var k: Double; Freq: Double); | Frequency transformation from a lowpass to a lowpass filter in s-domain. |
Overload 1: procedure LowpassToLowpass(const a: TMtx; const b: TVec; const c: TVec; var D: Double; Freq: Double);
Transform a lowpass filter prototype in state space form to a lowpass filter.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | a | TMtx | |
| 2 | b | TVec | |
| 3 | c | TVec | |
| 4 | D | Double | |
| 5 | Freq | Double | scalar |
Result: stored in self (calling object)
Overload 2: procedure LowpassToLowpass(const z: TVec; const p: TVec; var k: Double; Freq: Double);
Frequency transformation from a lowpass to a lowpass filter in s-domain.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | z | TVec | |
| 2 | p | TVec | |
| 3 | k | Double | |
| 4 | Freq | Double | scalar |
Result: stored in self (calling object)
Remarks:
Transform a lowpass filter prototype in zero-pole form to a lowpass filter, where the new cutoff frequency is Freq. Assumed sampling frequency is 2. The transformation is defined as ([1], p. 258): s -> s/W_u
Wu - new cutoff frequency
References:
[1] Theory and application of digital signal processing, Lawrence R. Rabiner and Bernard Gold. Prentice-Hall, 1975
Examples
uses MtxExpr, Math387, MtxVec, MtxVecTee, MtxVecEdit,
LinearSystems, IirFilters, SignalUtils;
procedure TForm1.Button1Click(Sender: TObject);
var z,p, num,den, FreqFr,Response: Vector;
Order: integer;
k,Wc,BW: Double;
begin
Order := 5; //design a fifth order filter.
EllipticAnalog(Order,0.2,40,z,p,k); //design analog protype
Wc := 0.7;
LowpassToLowpass(z,p,k,Wc); //frequency transformation in s-domain
ZeroPoleToTransferFun(num,den,z,p,k);
//Define the frequency grid (logarithmic)
FreqFr.Length := 1000;
LogRamp(FreqFr,-1,1); //between 0.1 (=10^(-1)) and 10 (=10^1) rad/sec
FrequencyResponseS(num,den,FreqFr,Response); //Laplace
DrawIt(Response); //Y axis linear, X axis logarithmic
end;