Class AlgorithmEllipticFilter

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowListener, java.lang.Runnable, java.util.EventListener

    public class AlgorithmEllipticFilter
    extends AlgorithmBase
    This module contains a port from FORTRAN to Java of the FORTRAN program for designing elliptic-function filters and a port from MATLAB to Java of the MATLAB program ellipap1 for designing an elliptic analog lowpass filter prototype found in "Elliptic Functions for Filter Design" by H. J. Orchard and Alan N. Willson, Jr. in IEEE Transactions on Circuits and Systems-I: Fundamental Theory and Applications, Vol. 44. No. 4, April, 1997, pp. 273-287. Permission to port code kindly granted by Alan N. Willson, Jr.
    • Field Detail

      • n

        private int n
      • rp

        private double rp
      • k

        private double k
      • displayOutput

        private boolean displayOutput
      • no

        private int no
      • n2

        private int n2
      • n3

        private int n3
      • runFORTRAN

        private boolean runFORTRAN
      • rs

        private double rs
      • zimag

        private double[] zimag
      • preal

        private double[] preal
      • pimag

        private double[] pimag
      • gain

        private double[] gain
      • N2

        private double[] N2
      • N0

        private double[] N0
      • D2

        private double[] D2
      • D1

        private double[] D1
      • D0

        private double[] D0
      • test

        private boolean test
    • Constructor Detail

      • AlgorithmEllipticFilter

        public AlgorithmEllipticFilter()
        The FORTRAN example in the article of n = 7, apd = 0.1dB, k = 0.8 gives in Table VI: Make FORTRAN zeros poles and FORTRAN poles zeros Poles: -0.0455944342 + j1.026557002 -0.1713670100 + j0.918389608 -0.3689660125 + j0.603979789 -0.4980421689 + j0.0 Zeros: 1.268831784 1.467798747 2.384834232 For the MATLAB example rs = 55.43dB. ellipap1 PORT gives: Zeros: j * -2.384764161974976 j * 2.384764161974976 j * -1.4677649005263902 j * 1.4677649005263902 j * -1.268807714942811 j * 1.268807714942811 Poles: -0.368967058832794 + j * -0.6039890555820511 -0.368967058832794 + j * 0.6039890555820511 -0.17136300802103874 + j * -0.9183938396880713 -0.17136300802103874 + j * 0.9183938396880713 -0.04559255065683074 + j * -1.026556156803157 -0.04559255065683074 + j * 1.026556156803157 -0.498050705720998 + j * 0.0 Gain = 0.011657502783825976
      • AlgorithmEllipticFilter

        public AlgorithmEllipticFilter​(int n,
                                       double rp,
                                       double k,
                                       double[] preal,
                                       double[] pimag,
                                       double[] zimag,
                                       boolean displayOutput)
        Parameters:
        n -
        apd -
        k -
        preal -
        pimag -
        zimag -
        displayOutput -
      • AlgorithmEllipticFilter

        public AlgorithmEllipticFilter​(int n,
                                       double rp,
                                       double rs,
                                       double[] zimag,
                                       double[] preal,
                                       double[] pimag,
                                       double[] gain,
                                       boolean displayOutput)
    • Method Detail

      • finalize

        public void finalize()
        Prepares this class for destruction.
        Overrides:
        finalize in class AlgorithmBase
      • runAlgorithm

        public void runAlgorithm()
        Description copied from class: AlgorithmBase
        Actually runs the algorithm. Implemented by inheriting algorithms.
        Specified by:
        runAlgorithm in class AlgorithmBase
      • runTest

        public void runTest()
      • runFORTRAN

        public void runFORTRAN()
        Starts the program.
      • ellipap1

        public void ellipap1()
      • generatePoly

        public void generatePoly()
      • findGain

        public double findGain​(double w)
      • find3dBfrequency

        public double find3dBfrequency()
      • zmlt

        private void zmlt​(double ar,
                          double ai,
                          double br,
                          double bi,
                          double[] cr,
                          double[] ci)
        complex multiply c = a * b.
        Parameters:
        ar - double
        ai - double
        br - double
        bi - double
        cr - double[]
        ci - double[]
      • zdiv

        private void zdiv​(double ar,
                          double ai,
                          double br,
                          double bi,
                          double[] cr,
                          double[] ci)
        complex divide c = a/b.
        Parameters:
        ar - double
        ai - double
        br - double
        bi - double
        cr - double[]
        ci - double[]
      • zabs

        private double zabs​(double zr,
                            double zi)
        zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.
        Parameters:
        zr - double
        zi - double
        Returns:
        double