Jump to content

File:Filters order5.svg

Page contents not supported in other languages.
This is a file from the Wikimedia Commons
From Wikipedia, the free encyclopedia
    Original file (SVG file, nominally 702 × 648 pixels, file size: 2 KB)

    Summary

    Description
    English: Frequency response curves of four linear analog filters: Butterworth filter, Chebyshev filter of type 1 and 2 and Elliptic filter, each one as 5th order filter.
    Português: Curvas de resposta em frequência de quatro filtros lineares analógicos: Butterworth, Chebyshev tipos 1 e 2 e elíptico, todos de quinta ordem.
    Русский: Сравнение амплитудно-частотных характеристик фильтров 5-го порядка: Баттерворта, Чебышёва 1-го и 2-го типов и эллиптического.
    Date
    Source Own work
    Author Geek3
    Other versions
    SVG development
    InfoField
     The SVG code is valid.
     This plot was created with Matplotlib.
      This file uses embedded text that can be easily translated using a text editor.
    Source code
    InfoField
    Python Matplotlib source code
    #!/usr/bin/python
    # -*- coding: utf8 -*-
    
    import numpy as np
    import scipy.signal as sig
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from math import *
    
    N = 5 # order of the filters
    band = 1.0 # cut-off normalized frequency
    Rpass = 1.0 # ripple in the pass-band (dB)
    Rstop = 20 # ripple in the stop-band (dB)
    frange = np.linspace(0, 2, 2001)
    color = 'r'
    fname = 'filters_order5.svg'
    
    mpl.rcParams['axes.grid'] = True
    plt.figure(figsize=(6, 5.4))
    
    (num, den) = sig.butter(N, band, analog=True)
    filterfy = sig.freqs(num, den, frange)
    plt.subplot(221)
    plt.title('Butterworth')
    plt.plot(filterfy[0], np.abs(filterfy[1]), lw=3, color=color)
    
    (num, den) = sig.cheby1(N, 1, band, analog=True)
    filterfy = sig.freqs(num, den, frange)
    plt.subplot(222)
    plt.title('Chebyshev type 1')
    plt.plot(filterfy[0], np.abs(filterfy[1]), lw=3, color=color)
    
    (num, den) = sig.cheby2(N, Rstop, band, analog=True)
    filterfy = sig.freqs(num, den, frange)
    plt.subplot(223)
    plt.title('Chebyshev type 2')
    plt.plot(filterfy[0], np.abs(filterfy[1]), lw=3, color=color)
    
    (num, den) = sig.ellip(N, Rpass, Rstop, band, analog=True)
    filterfy = sig.freqs(num, den, frange)
    plt.subplot(224)
    plt.title('Elliptic')
    plt.plot(filterfy[0], np.abs(filterfy[1]), lw=3, color=color)
    
    for ax in plt.gcf().get_axes():
        ax.set_xlim(*frange[[0,-1]])
        ax.set_ylim(0, 1.1)
        ax.set_xlabel('f/f$_0$')
        ax.xaxis.set_label_coords(0.65, -0.1)
        ax.set_ylabel('G', rotation=0)
        ax.yaxis.set_label_coords(-0.05, 1.0)
    
    plt.tight_layout(pad=1, w_pad=2, h_pad=2)
    plt.savefig(fname)
    
    def postprocess(fname):
        from lxml import etree
        with open(fname, 'r') as svgfile:
            tree = etree.parse(svgfile, etree.XMLParser(remove_blank_text=True))
        svg = tree.getroot()
        nsmap = '{' + svg.nsmap[None] + '}'
    
        # move all definitions to the front
        svg[:] = sorted(svg, key=lambda el: {False:0, True:1}[el.tag!=nsmap+'defs'])
        with open(fname, 'w') as svgfile:
            tree.write(svgfile,
                xml_declaration=True, pretty_print=True, encoding='utf-8')
    
    postprocess(fname)
    

    Licensing

    I, the copyright holder of this work, hereby publish it under the following license:
    w:en:Creative Commons
    attribution
    This file is licensed under the Creative Commons Attribution 4.0 International license.
    You are free:
    • to share – to copy, distribute and transmit the work
    • to remix – to adapt the work
    Under the following conditions:
    • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.

    Captions

    Add a one-line explanation of what this file represents

    10 December 2016

    2,437 byte

    image/svg+xml

    a6d7048868378774c920598bea178acacc34dff4

    File history

    Click on a date/time to view the file as it appeared at that time.

    Date/TimeThumbnailDimensionsUserComment
    current21:57, 8 October 2023Thumbnail for version as of 21:57, 8 October 2023702 × 648 (2 KB)Hugo SpinelliChanged path to text. Now using Liberation Serif. Centered the label on the horizontal axis.
    21:47, 10 December 2016Thumbnail for version as of 21:47, 10 December 2016540 × 485 (76 KB)Geek3== {{int:filedesc}} == {{Information |Description ={{en|1=Frequency response curves of four linear analog filters: {{W|Butterworth filter}}, {{W|Chebyshev filter}} of type 1 and 2 and {{W|Elliptic filter}}, each one as 5th order filter.}} |Source...

    Global file usage

    The following other wikis use this file:

    Metadata