示例#1
0
        public static void Lmatch_Z(Complex ZA, Complex ZB, bool isLP, double freq, out double L, out double C)
        {
            //Calculate Xs s/t GA,new = GB.
            //Add shunt susceptance s/t ZA = ZB.

            Complex YA = 1 / ZA;
            Complex YB = 1 / ZB;

            double a = YB.Real;
            double b = YB.Real * 2 * ZA.Imaginary;
            double c = YB.Real * ZA.Imaginary * ZA.Imaginary + YB.Real * ZA.Real * ZA.Real - ZA.Real;

            double Xs_Add;
            double Xs_Sub;

            MenialOperations.Quadratic(a, b, c, out Xs_Add, out Xs_Sub);

            double Xs = 0;

            //If this is a lowpass match, Xs needs > 0.
            if (isLP)
            {
                Xs = Xs_Add > 0 ? Xs_Add : Xs_Sub;
                Conversions.XtoComponent(Xs, freq, out L);

                Complex YA_Prime = 1 / (ZA + new Complex(0, Xs));
                double  Bp       = YB.Imaginary - YA_Prime.Imaginary;

                Conversions.BtoComponent(Bp, freq, out C);
            }
            //If this is a highpass match, Xs needs < 0.
            else
            {
                Xs = Xs_Add < 0 ? Xs_Add : Xs_Sub;
                Conversions.XtoComponent(Xs, freq, out C);

                Complex YA_Prime = 1 / (ZA + new Complex(0, Xs));
                double  Bp       = YB.Imaginary - YA_Prime.Imaginary;

                Conversions.BtoComponent(Bp, freq, out L);
            }
        }
示例#2
0
        public static void Lmatch_Y(Complex YA, Complex YB, bool isLP, double freq, out double L, out double C)
        {
            Complex ZA = 1 / YA;
            Complex ZB = 1 / YB;

            double a = ZB.Real;
            double b = ZB.Real * 2 * YA.Imaginary;
            double c = ZB.Real * YA.Imaginary * YA.Imaginary + ZB.Real * YA.Real * YA.Real - YA.Real;

            double Bp_Add;
            double Bp_Sub;

            MenialOperations.Quadratic(a, b, c, out Bp_Add, out Bp_Sub);

            double Bp = 0;

            //If this is a lowpass match, Bp needs > 0.
            if (isLP)
            {
                Bp = Bp_Add > 0 ? Bp_Add : Bp_Sub;
                Conversions.BtoComponent(Bp, freq, out C);

                Complex ZA_Prime = 1 / (YA + new Complex(0, Bp));
                double  Xs       = ZB.Imaginary - ZA_Prime.Imaginary;

                Conversions.XtoComponent(Xs, freq, out L);
            }
            //If this is a highpass match, Bp needs < 0.
            else
            {
                Bp = Bp_Add < 0 ? Bp_Add : Bp_Sub;
                Conversions.BtoComponent(Bp, freq, out L);

                Complex ZA_Prime = 1 / (YA + new Complex(0, Bp));
                double  Xs       = ZB.Imaginary - ZA_Prime.Imaginary;

                Conversions.XtoComponent(Xs, freq, out C);
            }
        }