Skip to main content

pyFDA is a python tool with a user-friendly GUI for designing and analysing discrete time filters.

Project description

pyFDA is a GUI based tool in Python / Qt for analysing and designing discrete time filters. The capability for generating Verilog and VHDL code for the designed and quantized filters will be added in the next release.

https://github.com/chipmuenk/pyFDA/raw/master/images/pyFDA_screenshot_3.PNG

Prerequisites

Besides standard python libraries, the project builds on the following libraries:

  • numpy

  • scipy

  • matplotlib

  • docutils

  • pyQt4

  • Optional: xlwt and / or XlsxWriter for exporting filter coefficients as *.xls(x) files

Installing and starting pyFDA

>> pip install pyfda

or download the zip file and extract it to a directory of your choice. Install it either to your <python>/Lib/site-packages subdirectory using

>> python setup.py install

or run it where you have installed the python source files using (for testing / development)

>> python setup.py develop

In both cases, start scripts pyfdax and pyfdax_no_term are created (with / without terminal).

For development, you can also run pyFDA using:

In [1]: %run -m pyfda.pyfdax # IPython or
>> python -m pyfda.pyfdax    # plain python interpreter

or run individual files from pyFDA using e.g.:

In [2]: %run -m pyfda.input_widgets.input_pz  # IPython or
>> python -m pyfda.input_widgets.input_pz     # plain python interpreter

Customization

The layout and some default paths can be customized using the file pyfda/pyfda_rc.py.

Features

  • Filter design
    • Design methods from scipy.signal: Equiripple, Firwin, Butterworth, Elliptic, Chebychev 1 and Chebychev 2

    • Remember all specifications when changing filter design methods

    • Fine-tune manually the filter order and corner frequencies calculated by minimum order algorithms

    • Compare filter designs for a given set of specifications and different design methods

    • Filter coefficients and poles / zeroes can be displayed, edited and quantized

  • Clearly structured GUI
    • only widgets needed for the currently selected design method are visible

    • enhanced matplotlib NavigationToolbar (nicer icons, additional functions)

  • Common interface for all filter design methods:
    • specify frequencies as absolute values or normalized to sampling or Nyquist frequency

    • specify ripple and attenuations in dB, as voltage or as power ratios

    • enter expressions like exp(-pi/4 * 1j) with the help of the library simpleeval (https://pypi.python.org/pypi/simpleeval) (included in source files)

  • Graphical Analyses
    • Magnitude response (lin / power / log) with optional display of specification bands, phase and an inset plot

    • Phase response (wrapped / unwrapped)

    • Group delay

    • Pole / Zero plot

    • Impulse response and step response (lin / log)

    • 3D-Plots (|H(f)|, mesh, surface, contour) with optional pole / zero display

  • Modular architecture, facilitating the implementation of new filter design and analysis methods
    • Filter design files not only contain the actual algorithm but also dictionaries specifying which parameters and standard widgets have to be displayed in the GUI.

    • Special widgets needed by design methods (e.g. for choosing the window type in Firwin) are included in the filter design file, not in the main program

    • Filter design files can be added and edited without changing or even restarting the program

  • Saving and loading
    • Save and load filter designs in pickled and in numpy’s NPZ-format

    • Export coefficients and poles/zeros as comma-separated values (CSV), in numpy’s NPZ-format, in Excel (R) or in Matlab (R) workspace format

  • Display help files (own / Python docstrings) as rich text

  • Runs under Python 2.7 and Python 3.3 … 3.5

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfda-0.1b16.tar.gz (156.7 kB view details)

Uploaded Source

Built Distributions

pyfda-0.1b16-py3-none-any.whl (206.8 kB view details)

Uploaded Python 3

pyfda-0.1b16-py2-none-any.whl (206.8 kB view details)

Uploaded Python 2

File details

Details for the file pyfda-0.1b16.tar.gz.

File metadata

  • Download URL: pyfda-0.1b16.tar.gz
  • Upload date:
  • Size: 156.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyfda-0.1b16.tar.gz
Algorithm Hash digest
SHA256 ff64445817f5e2ec9b6a4ce6db5a277a94b8adcc480976efc40f6c3073a5b5b9
MD5 01aeb8979de5ed2c97441bb902a0f5be
BLAKE2b-256 0c43c6fbf2292619f3582bfb4c11ae78c0fd9ca06a6b073327f7eaeef507e3ec

See more details on using hashes here.

File details

Details for the file pyfda-0.1b16-py3-none-any.whl.

File metadata

File hashes

Hashes for pyfda-0.1b16-py3-none-any.whl
Algorithm Hash digest
SHA256 cd4f073f6ef9f099f9fbfce9c8bb96ae0ca3cf44707ade5d4293cb620f6b93f0
MD5 cffbbb759d02e9f6a716e1d1fafebea2
BLAKE2b-256 78c3268d095cf417cc28a63dd2e31b638ddcb3e2f45c08e69c80789a164f4e0d

See more details on using hashes here.

File details

Details for the file pyfda-0.1b16-py2-none-any.whl.

File metadata

File hashes

Hashes for pyfda-0.1b16-py2-none-any.whl
Algorithm Hash digest
SHA256 6a11d7fa8f607390f72b0dc28a87655a05e951a5fe00ace0d89de58e1a4398d0
MD5 799661dca8f85de95a5267ae8deb4535
BLAKE2b-256 72847ed95194b8859b7fab477f2dbdf7191c068540b24cd813b5eab8abeff2cc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page