LinearSystems.LowpassToBandstop Method

Overload List

#SignatureDescription
1void LowpassToBandstop(TMtx a, TVec b, TVec c, ref Double D, Double CenterFreq, Double BW)Convert a lowpass filter prototype in state space form to a bandstop filter.
2void LowpassToBandstop(TVec z, TVec p, ref Double k, Double CenterFreq, Double BW)Frequency transformation from a lowpass to a bandstop filter in s-domain.

Overload 1: void LowpassToBandstop(TMtx a, TVec b, TVec c, ref Double D, Double CenterFreq, Double BW)

Convert a lowpass filter prototype in state space form to a bandstop filter.

#NameTypeDescription
1aTMtxsource TMtx
2bTVecsource TVec
3cTVecsource TVec
4DDouble (ref)output
5CenterFreqDoublescalar
6BWDoublescalar

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,BW;
        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 = Math.Sqrt(0.2*0.6);
        BW = 0.6 - 0.2;
        LinearSystems.LowpassToBandstop(z,p,ref k,Wc,BW);  //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.LowpassToBandpass, LinearSystems.LowpassToHighpass, LinearSystems.LowpassToLowpassZ, LinearSystems.LowpassToBandpassZ, LinearSystems.LowpassToBandstopZ, LinearSystems.LowpassToHighpassZ

Overload 2: void LowpassToBandstop(TVec z, TVec p, ref Double k, Double CenterFreq, Double BW)

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

#NameTypeDescription
1zTVecsource TVec
2pTVecsource TVec
3kDouble (ref)output
4CenterFreqDoublescalar
5BWDoublescalar

Result: stored in self (calling object)

Remarks:

Transform a lowpass filter prototype in zero-pole form to a bandstop filter, where the stopband has width BW centered around the frequency CenterFreq. Assumed sampling frequency is 2. The transformation is defined as ([1], p. 258): s -> (s (W_u - W_l))/(s^2 + W_u W_l)

Wl - lower cutoff frequency
Wu - upper cutoff frequency

The routine also adds pairs of zeros at +/-j*CenterFreq, if the number of zeros is less then number of poles, to match the number of poles.

References:

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