File:Butterworth phases 3.svg
From Wikimedia Commons, the free media repository
Size of this PNG preview of this SVG file: 512 × 384 pixels. Other resolutions: 320 × 240 pixels | 640 × 480 pixels | 800 × 600 pixels | 1,024 × 768 pixels | 1,280 × 960 pixels.
Original file (SVG file, nominally 512 × 384 pixels, file size: 16 KB)
Summary[edit]
Description |
English: phase response of a 3rd order lowpass Butterworth filter
|
||
Date | |||
Source | Own work | ||
Author | Fcorthay | ||
SVG development |
|
Source code[edit]
This graphics has been realized with the help of the following Octave script:
#------------------------------------------------------------------------------- # Specifications # order = 3; fc = 1; pointNb = 100; axesLength = 1.25; textOffset = 0.05; wLog = logspace(-2, 2, pointNb); AdbMax = 10; AdbMin = -60; makeGraphics = 1; figureIndex = 0; #=============================================================================== # Butterworth filter # [zeroes, poles, gain] = butter(order, fc, 's'); [num, den] = butter(order, fc, 's'); while ( length(num) < length(den) ) num = [0, num]; endwhile; #------------------------------------------------------------------------------- # Poles plot # figureIndex = figureIndex+1; figure(figureIndex); angle = linspace(pi/2, 3*pi/2, pointNb); plot(cos(angle), sin(angle)); hold on; plot([-axesLength, axesLength-1], [0, 0], 'k'); plot([0, 0], [-axesLength, axesLength], 'k'); plot(axesLength-1+textOffset*[0, 2, 0, 0], textOffset*3/4*[-1, 0, 1, -1], 'k'); plot(textOffset*3/4*[-1, 0, 1, -1], axesLength+textOffset*[0, 2, 0, 0], 'k'); plot(poles, 'xr'); hold off; axis("equal", "off"); text(axesLength-1+textOffset, 1.5*textOffset, "re(s)"); text(textOffset, axesLength+1.5*textOffset, "im(s)"); for index = 1:order if imag(poles(index)) > 0 text(real(poles(index))-textOffset, imag(poles(index))+textOffset, ... sprintf("p%i", index), "horizontalalignment", "right"); elseif imag(poles(index)) == 0 text(real(poles(index))-textOffset, imag(poles(index))+textOffset, ... "pr", "horizontalalignment", "right"); endif endfor if (makeGraphics != 0) print -dsvg butterworth_poles_3.svg endif #------------------------------------------------------------------------------- # Amplitude plot # Adb = 20*log10(abs(freqs(num, den, wLog))); figureIndex = figureIndex+1; figure(figureIndex); semilogx(wLog, Adb); hold on; for index = 1:order if imag(poles(index)) > 0 numP = [0, 0, 1]; denP = [1, -2*real(poles(index)), abs(poles(index))^2]; Adb = 20*log10(abs(freqs(numP, denP, wLog))); semilogx(wLog, Adb, 'g'); elseif imag(poles(index)) == 0 numP = [0, 1]; denP = [1, -real(poles(index))]; Adb = 20*log10(abs(freqs(numP, denP, wLog))); semilogx(wLog, Adb, 'g'); endif endfor hold off; axis([wLog(1), wLog(length(wLog)), AdbMin, AdbMax]); xlabel('Frequency'); ylabel('Amplitude responses'); grid; if (makeGraphics != 0) print -dsvg butterworth_amplitudes_3.svg endif #------------------------------------------------------------------------------- # Phase plot # phase = arg(freqs(num, den, wLog)); figureIndex = figureIndex+1; figure(figureIndex); semilogx(wLog, phase); hold on; for index = 1:order if imag(poles(index)) > 0 numP = [0, 0, 1]; denP = [1, -2*real(poles(index)), abs(poles(index))^2]; phase = arg(freqs(numP, denP, wLog)); semilogx(wLog, phase, 'g'); elseif imag(poles(index)) == 0 numP = [0, 1]; denP = [1, -real(poles(index))]; phase = arg(freqs(numP, denP, wLog)); semilogx(wLog, phase, 'g'); endif endfor semilogx([wLog(1), wLog(length(wLog))], -pi/2*[1, 1], 'c'); semilogx([wLog(1), wLog(length(wLog))], 0 *[1, 1], 'c'); semilogx([wLog(1), wLog(length(wLog))], pi/2*[1, 1], 'c'); hold off; axis([wLog(1), wLog(length(wLog)), -pi, pi]); xlabel('Frequency'); ylabel('Phase responses'); if (makeGraphics != 0) print -dsvg butterworth_phases_3.svg endif
Licensing[edit]
I, the copyright holder of this work, hereby publish it under the following licenses:
You may select the license of your choice.
|
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 15:08, 7 June 2012 | 512 × 384 (16 KB) | Fcorthay (talk | contribs) | {{Information |Description ={{en|1=phase response of a 3rd order lowpass Butterworth filter}} |Source ={{own}} |Author =Fcorthay |Date =2012-06-07 |Permission = |other_versions = }} [[Category:Signal ... |
- You cannot overwrite this file.
File usage on Commons
There are no pages that link to this file.
File usage on other wikis
The following other wikis use this file:
- Usage on en.wikibooks.org