LinearSystems.LowpassToHighpass Method

Overload List

#SignatureDescription
1void LowpassToHighpass(TMtx A, TVec B, TVec C, ref Double D, Double Freq)Transform a lowpass filter prototype in state space form to highpass filter.
2void LowpassToHighpass(TVec z, TVec p, ref Double k, Double Freq)Frequency transformation from a lowpass to a highpass filter in s-domain.

Overload 1: void LowpassToHighpass(TMtx A, TVec B, TVec C, ref Double D, Double Freq)

Transform a lowpass filter prototype in state space form to highpass filter.

#NameTypeDescription
1ATMtxsource TMtx
2BTVecsource TVec
3CTVecsource TVec
4DDouble (ref)output
5FreqDoublescalar

Result: stored in self (calling object)

Examples
using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;

private void button1_Click(object sender, EventArgs e)
{
    Vector z = new Vector(0);
    Vector p = new Vector(0);
    Vector num = new Vector(0);
    Vector den = new Vector(0);
    Vector Response = new Vector(0);
    Vector FreqFr = new Vector(0);
    double k,Wc;
    double FS = 2;
    int Order = 5; //design a fifth order filter.

    IIRFilters.EllipticAnalog(Order,0.2,40,z,p,out k);  //design analog protype
    Wc = 0.2;
    LinearSystems.LowpassToHighpass(z,p,ref k,Wc);  //frequency transformation in s-domain
    LinearSystems.ZeroPoleToTransferFun(num,den,z,p,k);
    //Define the frequency grid (logarithmic)
        FreqFr.Length = 1000;
        SignalUtils.LogRamp(FreqFr,-1,1); //between 0.1 (=10^(-1)) and 10 (=10^1) rad/sec
        SignalUtils.FrequencyResponseS(num,den,FreqFr,Response,0); //Laplace
        MtxVecTee.DrawIt(Response,"Frequency response",false); //Y axis linear, X axis logarithmic
}
See Also: LinearSystems.LowpassToLowpass, LinearSystems.LowpassToBandstop, LinearSystems.LowpassToBandpass, LinearSystems.LowpassToLowpassZ, LinearSystems.LowpassToBandpassZ, LinearSystems.LowpassToBandstopZ, LinearSystems.LowpassToHighpassZ

Overload 2: void LowpassToHighpass(TVec z, TVec p, ref Double k, Double Freq)

Frequency transformation from a lowpass to a highpass filter in s-domain.

#NameTypeDescription
1zTVecsource TVec
2pTVecsource TVec
3kDouble (ref)output
4FreqDoublescalar

Result: stored in self (calling object)

Remarks:

Transform a lowpass filter prototype in zero-pole form to a highpass filter, where the new cutoff frequency is Freq. Assumed sampling frequency is 2. The transformation is defined as ([1], p. 258): s -> W_u/s

Wu - new cutoff frequency

The routine also adds zeros at 0. It adds one zero, if the lowpass filter order is odd and already has zeros. If the filter does not have zeros, it adds sufficient zeros at 0 to match the order of the filter.

References:

[1] Theory and application of digital signal processing, Lawrence R. Rabiner and Bernard Gold. Prentice-Hall, 1975