Jump to content

File:Butterworth filter bode plot.png

Page contents not supported in other languages.
This is a file from the Wikimedia Commons
From Wikipedia, the free encyclopedia
    Original file (1,250 × 875 pixels, file size: 110 KB, MIME type: image/png)

    Summary

    Description
    English: The Bode plot of a Butterworth filter with logarithmic axes and various labels. Cutoff frequency is normalized to 1 rad/s. Gain is normalized to 0 dB in the passband. Phase is in degrees because that's typical.

    The code is kind of kludgy, but makes a good output.

    See Wikipedia graph-making tips. Generated in gnuplot with the script below (save as butterworth_bode_plot.plt and then open in gnuplot). Then I opened the butterworth_bode_plot.ps file in a text editor to edit the line colors and linestyles, as per this description. This avoids needing to open in proprietary software, and really isn't that difficult (especially if you don't know the commands in the proprietary software either). ;-) Identify the lines easily by their color (the arrow is currently magenta and I want it to be black. Ah, there is the entry with 1 0 1, red + blue = magenta) or by using the gnuplot linestyle−1. (For instance, gnuplot's linestyle 3 corresponds to the ps file's /LT2.) Then you can edit the colors and dashes by hand. I changed the original:
    /LT0 { PL [] 1 0 0 DL } def
    /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
    /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
    /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
    

    into this:

    /LT0 { PL [] 0 0 1 DL } def
    /LT1 { PL [4 dl 2 dl] 0.5 0.5 0.5 DL } def
    /LT2 { PL [6 dl 3 dl] 0.3 0.3 1 DL } def
    /LT3 { PL [] 0 0 0 DL } def
    

    /LT4–/LT8 I left unchanged. (I don't know what they're used for anyway.) /LTw, /LTb, and /LTa are for the grid lines and such.

    To convert the PostScript file to PNG:

    1. Open it in the GIMP (make sure you have ghostscript installed! - Windows instructions)
      • Enter 500 under Resolution (it doesn't say "DPI" but I think that's what it means)
      • Uncheck Try bounding box (since the bounding box cuts off the edge, unfortunately. You can try with the bounding box first.)
      • Enter large values for Width and Height
      • Check Color
      • Check Strong anti-aliasing for both graphics and text
    2. Crop off extra whitespace (Shift+C if you can't find it in the toolbox)
    3. Possibly need to rotate it: Click ImageTransformRotate 90 degrees clockwise
    4. FiltersBlurGaussian blur at 2.0 px (No need to blur if you use strong anti-aliasing during conversion. I see no significant difference between end results.)
    5. ImageScale Image...
      • Width and Height at 25%
      • Cubic interpolation
    6. You can view at normal size if you want by pressing 1, Ctrl+E
    7. Save as Butterworth filter bode plot.png
     This plot was created with gnuplot by n.
    Many orders on one plot: File:Butterworth orders.png
    Date 8 October 2005 (upload date)
    Source Own work
    Author Omegatron
    Other versions

    [edit]

    .svg:

    .png:

    gnuplot source
    InfoField
    set samples 2001
    set terminal postscript enhanced landscape color lw 2 "Times-Roman" 20
    set output "butterworth bode plot.ps"
    
    # Butterworth amplitude response and decibel calculation.  n is the order, which is just 1 in this image.
    G(w,n) = 1 / (sqrt(1 + w**(2*n)))
    dB(x) = 20 * log10(abs(x))
    # Phase is for first order
    P(w) = -pi/2-atan(1.2*w)-atan(0.09*w)
    
    # Gridlines
    set grid
    
    # Set x axis to logarithmic scale
    set logscale x 10
    
    # No need for a key
    set nokey #0.1,-25
    
    # Frequency response's line plotting style
    set style line 1 lt 1 lw 2
    
    # Asymptote lines and slope lines are the same "arrow" style
    set style line 3 lt 3 lw 1
    set style arrow 3 nohead ls 3
    
    # -3 dB arrow style
    set style line 4 lt 4 lw 1
    set style arrow 4 head filled size screen 0.02,15,45 ls 4
    
    # Separator between passband and stopband line style
    set style line 2 lt 2 lw 1 
    set style arrow 2 nohead ls 2
    
    set multiplot
    
    # Magnitude response
    # =============================================
    set size 1,0.5
    set origin 0,0.5
    
    # Set range of x and y axes
    set xrange [0.001:1000]
    set yrange [-60:10]
    
    # Create x-axis tic marks once per decade (every multiple of 10)
    set xtics 10
    #set ytics 10
    
    # No need for two sets of numbers
    set format x ""
    
    # Use 10 x-axis minor divisions per major division
    set mxtics 10
    
    # Axis labels
    set ylabel "Gain (dB)"
    
    # Draw asymptote lines
    set arrow 1 from 1,0 to 1000,-60 as 3
    set arrow 2 from .001,0 to 1,0 as 3
    
    # -3 dB arrow
    set arrow 4 from 2,3 to 1,0 as 4
    
    # "Cutoff frequency" label uses same coordinates as the function
    set label 3 "Cutoff frequency" at 2,4 l
    
    # "-3 dB" label
    set arrow 5 from 0.5,-6 to 1,-3 as 4   
    set label 4 "-3.01 dB" at 0.5,-7 r
    
    # Draw a separator between passband and stopband and label them
    set arrow 3 from 1,-60 to 1,10 as 2
    
    # Label coordinates are relative to the graph window, not to the function, centered at the 1/4 and 3/4 width points
    set label 1 "Passband" at graph 0.25, graph 0.1 c
    set label 2 "Stopband" at graph 0.75, graph 0.1 c
    
    # Draw slope lines and label
    set arrow 6 from 100,-20 to 12,-20 as 3
    set arrow 7 from 100,-20 to 100,-39 as 3
    set label 5 "Slope: -20 dB/decade" at 100,-15 c
    
    plot dB(G(x,1)) ls 1  title "1st-order response"
    
    #Phase response
    # =============================================
    set size 1,0.5
    set origin 0,0
    
    # Set range of x and y axes
    set yrange [-105:15]
    
    # Create y-axis tic marks every 15 degrees
    set ytics 30
    
    # Regular numbers
    set format x "% g"
    
    # Axis labels
    set ylabel "Phase (degrees)"
    set xlabel "Angular frequency (rad/s)"
    
    # Draw asymptote lines
    set arrow 1 from 0.1,0 to 10,-90 as 3
    set arrow 2 from 0.001,0 to 0.1,0 as 3
    set arrow 10 from 10,-90 to 1000,-90 as 3
    
    # -3 dB arrow
    unset arrow 4 #from 2,3 to 1,0 as 4
    
    # "Cutoff frequency" label uses same coordinates as the function
    unset label 3 #"Cutoff frequency" at 2,4 l
    
    # "-3 dB" label
    unset arrow 5 #from 0.5,-6 to 1,-3 as 4   
    unset label 4 #"-3.01 dB" at 0.5,-7 r
    
    # Draw a separator between passband and stopband and label them
    set arrow 3 from 1,-105 to 1,15 as 2
    
    # Label coordinates are relative to the graph window, not to the function, centered at the 1/4 and 3/4 width points
    set label 1 "Passband" at graph 0.25, graph 0.5 c
    set label 2 "Stopband" at graph 0.75, graph 0.5 c
    
    # Draw slope lines and label
    unset arrow 6 #from 100,-20 to 12,-20 as 3
    unset arrow 7 #from 100,-20 to 100,-39 as 3
    unset label 5 #"Slope: -20 dB/decade" at 100,-18 c
    
    plot P(x) ls 1 title "Phase response"
    
    unset multiplot
    
    File:Butterworth filter bode plot.svg is a vector version of this file. It should be used in place of this PNG file when not inferior.

    File:Butterworth filter bode plot.png → File:Butterworth filter bode plot.svg

    For more information, see Help:SVG.

    In other languages
    Alemannisch  العربية  беларуская (тарашкевіца)  български  বাংলা  català  нохчийн  čeština  dansk  Deutsch  Ελληνικά  English  British English  Esperanto  español  eesti  euskara  فارسی  suomi  français  Frysk  galego  Alemannisch  עברית  हिन्दी  hrvatski  magyar  հայերեն  Bahasa Indonesia  Ido  italiano  日本語  ქართული  한국어  lietuvių  македонски  മലയാളം  Bahasa Melayu  မြန်မာဘာသာ  norsk bokmål  Plattdüütsch  Nederlands  norsk nynorsk  norsk  occitan  polski  prūsiskan  português  português do Brasil  română  русский  sicilianu  Scots  slovenčina  slovenščina  српски / srpski  svenska  தமிழ்  ไทย  Türkçe  татарча / tatarça  українська  vèneto  Tiếng Việt  中文  中文(中国大陆)  中文(简体)  中文(繁體)  中文(马来西亚)  中文(新加坡)  中文(臺灣)  +/−
    New SVG image

    Licensing

    I, the copyright holder of this work, hereby publish it under the following licenses:
    w:en:Creative Commons
    attribution share alike
    This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic 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.
    • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
    GNU head Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.
    You may select the license of your choice.

    Captions

    Add a one-line explanation of what this file represents

    Items portrayed in this file

    depicts

    image/png

    4b0596035fd06b6a070c0c0b5e8a4a2fd0d47617

    112,847 byte

    875 pixel

    1,250 pixel

    File history

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

    Date/TimeThumbnailDimensionsUserComment
    current20:01, 8 October 2005Thumbnail for version as of 20:01, 8 October 20051,250 × 875 (110 KB)Omegatronlast revision?
    19:41, 8 October 2005Thumbnail for version as of 19:41, 8 October 20051,250 × 875 (113 KB)Omegatronbetter
    19:30, 8 October 2005Thumbnail for version as of 19:30, 8 October 20051,250 × 875 (117 KB)OmegatronThe frequency response of a Butterworth filter with logarithmic axes (Bode plot) and various labels. Cutoff frequency is normalized to 1 rad/s. Gain is
    No pages on the English Wikipedia use this file (pages on other projects are not listed).

    Global file usage

    The following other wikis use this file: