File:Frequency response of 3-term boxcar filter.svg
Page contents not supported in other languages.
Tools
Actions
General
In other projects
Appearance
Size of this PNG preview of this SVG file: 416 × 400 pixels. Other resolutions: 250 × 240 pixels | 499 × 480 pixels | 799 × 768 pixels | 1,065 × 1,024 pixels | 2,130 × 2,048 pixels.
Original file (SVG file, nominally 416 × 400 pixels, file size: 20 KB)
This is a file from the Wikimedia Commons. Information from its description page there is shown below. Commons is a freely licensed media file repository. You can help. |
Summary
DescriptionFrequency response of 3-term boxcar filter.svg |
English: Frequency response (discrete time Fourier transform) of a 3-tap boxcar filter. To produce these plots, samples of the DTFT are obtained by computing the DFT of the zero-filled impulse response. Alternatively, one can directly sample the closed form of the DTFT: and plot the magnitude and angle of the samples. (See File:MA2Amp_C.svg) Note: At the two frequencies where the magnitude goes to zero, there are phase discontinuities of π radians. They are not artifacts of phase wrapping. Rather, they indicate a sign inversion... multiplication by -1. Since that is equivalent to an amplitude modification, it does not affect the filter's property of phase linearity. An illustration of that can be viewed at File:Amplitude & phase vs frequency for 3-term boxcar filter.svg. |
|||
Date | ||||
Source | Own work | |||
Author |
original: Bob K vector version: Krishnavedala |
|||
Permission (Reusing this file) |
I, the copyright holder of this work, hereby publish it under the following license:
|
|||
Other versions |
This file was derived from: Frequency response of 3-term boxcar filter.gif |
|||
SVG development InfoField | ||||
Python source InfoField | click to expand
This script is a translation of the original Octave script into Python, for the purpose of generating an SVG file to replace the GIF version. import scipy
from scipy import signal
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['svg.fonttype'] = 'none'
N = 256
h = np.array([1., 1., 1.]) / 3
H = scipy.fftpack.shift(scipy.fft(h, N), np.pi)
w = np.linspace(-N/2, N/2-1, num=N) * 2 * np.pi / N
fig = plt.figure(figsize=[5,5])
plt.subplot(211)
plt.plot(w, np.abs(H), 'blue')
plt.grid(True)
plt.ylabel('Magnitude')
plt.xlim([-np.pi,np.pi])
plt.xticks([-np.pi, -2*np.pi/3,0,2*np.pi/3,np.pi], [])
plt.subplot(212)
plt.plot(w, np.angle(H), 'blue')
plt.grid(True)
plt.ylabel('Phase (radians)')
plt.xlabel('$\\longleftarrow$ Frequency ($\\omega$) (radians/sample) $\\longrightarrow$')
plt.xticks([-np.pi, -2*np.pi/3,0,2*np.pi/3,np.pi], ['-$\pi$','-2$\pi$/3','0','2$\pi$/3','$\pi$'])
plt.xlim([-np.pi,np.pi])
plt.yticks([-np.pi, -2,-1,0,1,2,np.pi], ['-$\pi$','-2','-1','0','1','2','$\pi$'])
plt.ylim([-np.pi,np.pi])
plt.subplots_adjust(hspace=0.1)
plt.savefig('Frequency response of 3-term boxcar filter.svg', bbox_inches='tight', transparent=True)
|
|||
Octave/gnuplot source InfoField | click to expand
This script was derived from the original in order to address some GNUplot bugs: a missing title and two missing axis labels. And to add an Octave print function, which creates an SVG file. Alternatively, the gnuplot screen image has an export function that produces an SVG file, but the π characters aren't as professional-looking. I think the resultant quality produced by this script is now better than the file produced by the Python script.
graphics_toolkit gnuplot
clear all; close all; clc
hfig = figure("position",[100 100 509 509]);
x1 = .12; % left margin for name of Y-variable
x2 = .02; % right margin
y1 = .10; % bottom margin for ticks
y2 = .08; % top margin for title
dy = .08; % vertical space between rows
width = 1-x1-x2;
height= (1-y1-y2-dy)/2; % space allocated for each of 2 rows
x_origin = x1;
y_origin = 1; % start at top of graph area
%=======================================================
N= 256;
h = [1 1 1]/3; % impulse response
H = fftshift(fft(h,N)); % samples of DTFT
abscissa = (-N/2:N/2-1)*2*pi/N; % normalized frequency
%=======================================================
y_origin = y_origin -y2 -height; % position of top row
subplot("position",[x_origin y_origin width height])
plot(abscissa, abs(H), "linewidth",2);
xlim([-pi pi])
ylim([0 1.2])
set(gca, "XTick", [-pi -2*pi/3 0 2*pi/3 pi])
set(gca, "YTick", [0 .2 .4 .6 .8 1])
grid("on")
ylabel("Magnitude")
% set(gca, "ticklabelinterpreter", "tex") % tex is the default
set(gca, "XTickLabel", ['-\pi'; '-2\pi/3'; '0'; '2\pi/3'; '\pi';])
set(gca, "YTickLabel", ['0'; '.2'; '.4'; '.6'; '.8'; '1';])
title("Frequency response of 3-term boxcar filter", "fontsize", 12)
%=======================================================
y_origin = y_origin -dy -height;
subplot("position",[x_origin y_origin width height])
plot(abscissa, angle(H), "linewidth",2);
xlim([-pi pi])
ylim([-pi pi])
set(gca, "XTick", [-pi -2*pi/3 0 2*pi/3 pi])
set(gca, "YTick", [-pi -2 -1 0 1 2 pi])
grid("on")
xlabel('\leftarrow Frequency (\omega) (radians/sample) \rightarrow')
ylabel("Phase (radians)")
% set(gca, "ticklabelinterpreter", "tex") % tex is the default
set(gca, "XTickLabel", ['-\pi'; '-2\pi/3'; '0'; '2\pi/3'; '\pi';])
set(gca, "YTickLabel", ['-\pi'; '-2'; '-1'; '0'; '1'; '2'; '\pi';])
% The print function results in nicer-looking "pi" symbols
% than the export function on the GNUPlot figure toolbar.
print(hfig,"-dsvg", "-S509,509","-color", ...
'C:\Users\BobK\Frequency response of 3-term boxcar filter.svg')
|
Items portrayed in this file
depicts
22 August 2017
image/svg+xml
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 13:07, 1 October 2020 | 416 × 400 (20 KB) | Krishnavedala | Text-to-graph aspect ratio renders poorly in thumbnails with text unreadable. | |
01:36, 3 July 2019 | 512 × 512 (37 KB) | Bob K | Increase graph "linewidth" to 2. | ||
22:11, 2 July 2019 | 512 × 512 (37 KB) | Bob K | Enlarge image. Add title. Improve rendering of "pi" symbols. | ||
15:35, 22 August 2017 | 416 × 400 (20 KB) | Krishnavedala | User created page with UploadWizard |
File usage
The following 2 pages use this file:
Global file usage
The following other wikis use this file:
- Usage on zh.wikipedia.org
Metadata
This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.
Width | 333pt |
---|---|
Height | 320pt |