Skip to content

Special FIR filters

Build a differentiator that ignores noise, a half-band filter with every other tap zero, a Hilbert transformer and a fractional delay.

Before this19.1 · 7 more
Chapter 19 · Lesson 4 of 4

First, the picture

Take the slope of a noisy signal and the noise usually wins. Below, one noisy sine goes through two filters that take its slope. Watch the bottom panel: one output is buried in noise, and the other lies close to the true slope.

A differentiator that ignores the noise

sin(0.04πn) with noise 0.05 RMS, through the first difference and a 61-tap band-limited differentiator (cutoff 0.2π). Outputs are drawn moved back by their delays, 0.5 and 30 samples.

first-difference error
not yet
61-tap error
not yet
0.00 / 13.00 s
Describe this picture

Three stacked panels for the sine sin⁡(0.04πn)\sin(0.04\pi n) with noise of 0.05 RMS, sent through the first difference and through a 61-tap band-limited differentiator with its cutoff at 0.2π0.2\pi. The gain panel plots the gain, from 0 to 2.2, against Ω\Omega from 0 to π\pi rad/sample: the ideal, Ω\Omega, as a thin dashed line, the first difference as a dotted line and the 61-tap filter as a solid line. A small upward open triangle under the axis at 0.04π0.04\pi, labelled “the sine”, marks where the signal is. The input panel draws the noisy sine x[n]x[n] as a thin solid line through the samples, for nn from 0 to 239. The slopes panel, for nn from 30 to 210, draws the true slope as a thin dashed line, the first difference’s output as a dotted line with small dots and the 61-tap output as a solid line. The outputs are drawn moved back by their delays, 0.5 and 30 samples. The two readouts are each output’s error, the RMS difference from the true slope; each reads “not yet” until its output is drawn.

The clip lasts 13 s. First the three gain curves draw and the input appears: the first difference follows Ω\Omega all the way up, and the 61-tap one follows it to about 0.15π0.15\pi and then falls to 0. Then the first difference’s output draws, and at 7 s its error reads 0.0752: the slope, 0.126 at most, is buried in noise. Last the 61-tap output draws, with an error of 0.0075, ten times smaller. From 13 s an overlay slider on the gain panel, named “Cutoff Ω_c”, sets the cutoff from 0.05π0.05\pi to π\pi in steps of 0.01π0.01\pi; its value text reads like “0.20π rad/sample: error 0.0075”. The arrow keys move it by 0.01π0.01\pi, Page Up and Page Down by 0.1π0.1\pi, and Home and End jump to the ends. The 61-tap curve and its output redraw at once, and the caption reads like “Cutoff 0.10π: error 0.0025.” The setting is kept in the link, as deriv.wc, in units of π\pi.

A slope from samples

Suppose you log a car’s speed once per sample and want its acceleration. Acceleration is the rate of change of speed, its slope. The speedometer jitters a little, and that is the trouble. The jitter changes faster than the speed does, so it is the jitter that changes the slope most.

The design methods of Window-method FIR design (19.1) to Optimal FIR design (19.3) made band filters: pass some frequencies, stop others. On this page the same methods make four other filters. Each one starts from a different ideal response, and that ideal response is the only new thing on each part of the page.

On Properties of the Fourier transform (8.2) you saw that differentiation multiplies the spectrum by jωj\omega. The same holds for samples.

Take x[n]=xc(nTs)x[n]=x_c(nT_s) with Ts=1T_s=1, from a wave with nothing at or above half the sample rate. The slope of xcx_c at the sample times has the spectrum jΩX(ejΩ)j\Omega X(e^{j\Omega}) for ∣Ω∣<π\lvert\Omega\rvert<\pi. So the ideal differentiator is the filter

Hdes(Ω)=jΩ,∣Ω∣<π,H_\text{des}(\Omega)=j\Omega,\qquad \lvert\Omega\rvert<\pi,

where “des” means desired, as in 19.1. Its gain is Ω\Omega: a wave twice as fast comes out twice as steep.

The simplest slope you can take from samples is the first difference y[n]=x[n]−x[n−1]y[n]=x[n]-x[n-1] of Oversampling and noise shaping (11.3). On Frequency response of discrete-time systems (12.4) its gain came out as 2∣sin⁡(Ω/2)∣2\lvert\sin(\Omega/2)\rvert. For slow waves that is close to Ω\Omega: at 0.04π0.04\pi it is 0.12558, against 0.12566. At π\pi it is 2 instead of π\pi.

Both curves rise all the way to π\pi. That is the problem: the jitter has energy at every frequency, and its fastest parts get the most gain.

A slow signal needs the gain Ω\Omega only as far as the signal goes. Above that I want gain 0. A differentiator that follows Ω\Omega up to a cutoff Ωc\Omega_c and is 0 above it is a band-limited differentiator:

Hdes(Ω)={jΩ,∣Ω∣<Ωc,0,Ωc≤∣Ω∣≤π.H_\text{des}(\Omega)=\begin{cases}j\Omega, & \lvert\Omega\rvert<\Omega_c,\\ 0, & \Omega_c\le\lvert\Omega\rvert\le\pi.\end{cases}

Its taps come from the inverse DTFT of The DTFT (12.2), the same step that gave 12.4 the ideal low-pass:

hdes[m]=12π∫−ΩcΩcjΩ ejΩm dΩ=−1π∫0ΩcΩsin⁡(Ωm) dΩ=Ωcmcos⁡(Ωcm)−sin⁡(Ωcm)πm2.\begin{aligned} h_\text{des}[m]&=\frac{1}{2\pi}\int_{-\Omega_c}^{\Omega_c}j\Omega\,e^{j\Omega m}\,d\Omega\\ &=-\frac{1}{\pi}\int_{0}^{\Omega_c}\Omega\sin(\Omega m)\,d\Omega\\ &=\frac{\Omega_cm\cos(\Omega_cm)-\sin(\Omega_cm)}{\pi m^2}. \end{aligned}

The second line splits ejΩme^{j\Omega m} into cos⁡(Ωm)+jsin⁡(Ωm)\cos(\Omega m)+j\sin(\Omega m). The cosine part, Ωcos⁡(Ωm)\Omega\cos(\Omega m), is odd in Ω\Omega and integrates to 0, and j⋅j=−1j\cdot j=-1 gives the minus sign. The third line is integration by parts. At m=0m=0 the integrand jΩj\Omega is odd, so hdes[0]=0h_\text{des}[0]=0.

These taps are antisymmetric, hdes[−m]=−hdes[m]h_\text{des}[-m]=-h_\text{des}[m]. The window method of 19.1 does the rest. Keep Nh=2α+1N_h=2\alpha+1 taps and multiply by a window: h[n]=w[n] hdes[n−α]h[n]=w[n]\,h_\text{des}[n-\alpha]. I use the Kaiser window with β=3.40\beta=3.40 that 19.1 chose for 40 dB, and 61 taps, so α=30\alpha=30.

An antisymmetric filter of odd length is type III of Linear-phase systems (17.3), so its gain is forced to 0 at Ω=0\Omega=0 and at Ω=π\Omega=\pi. At Ω=0\Omega=0 that is what a differentiator should do, because a constant has slope 0. At π\pi it does no harm as long as Ωc\Omega_c is below π\pi, because the ideal is 0 there too.

A differentiator that ignores the noise

The picture at the top of the page sends one noisy sine through the first difference and through a 61-tap band-limited differentiator with Ωc=0.2π\Omega_c=0.2\pi, and compares both outputs with the true slope.

It draws the outputs moved back by their delays. Why are they moved back? The first difference is antisymmetric with two taps, so it delays by α=0.5\alpha=0.5 samples (17.3). The 61-tap filter delays by 30.

Look at the input first: the noise is barely visible there. Then look at the first difference: the noise swamps the slope. The sine’s slope is at most 0.126 per sample, and the noise in the output is 0.075 RMS, more than half of that. The 61-tap output lies close to the true slope.

When the clip has finished, drag across the gain panel to set Ωc\Omega_c yourself, or use the arrow keys.

Choosing Ωc\Omega_c trades noise against signal. At 0.10π0.10\pi the error falls to 0.0025, because less noise gets through. At 0.05π0.05\pi it rises to 0.0423, because now the cutoff cuts into the sine itself: the gain at 0.04π0.04\pi is only 0.066, about half of the 0.126 it should be. Above 0.2π0.2\pi the error grows again, to 0.0138 at 0.30π0.30\pi and 0.0319 at 0.50π0.50\pi.

At π\pi the error is 0.0954, worse than the first difference. With Ωc=π\Omega_c=\pi the design follows Ω\Omega over the whole band. It follows it more closely than the first difference does, so it gives the noise even more gain. Its taps are cos⁡(πm)/m\cos(\pi m)/m, and this full-band ideal really wants type IV, like the first difference: it needs gain π\pi at π\pi, and type III is forced to 0 there (17.3). An even length, with its centre between two samples, avoids that zero.

The maths behind it · least-squares slopes

Differentiating noisy data magnifies the noise, so spectroscopy and chemometrics use Savitzky–Golay filters. They fit a low-degree polynomial to each window of points by least squares and take its slope. That is a band-limited differentiator designed by least squares. Interpolating a time series at times between its samples is the fractional delay at the end of this page.

Half-band: every other tap is zero

Now a low-pass, with one special cutoff. A half-band low-pass has its cutoff at Ωc=0.5π\Omega_c=0.5\pi, half of the band from 0 to π\pi. The ideal low-pass of 12.4 has the taps sin⁡(Ωcm)/(πm)\sin(\Omega_cm)/(\pi m) and h[0]=Ωc/πh[0]=\Omega_c/\pi. With Ωc=0.5π\Omega_c=0.5\pi they are

hdes[m]=sin⁡(πm/2)πm,hdes[0]=0.5.h_\text{des}[m]=\frac{\sin(\pi m/2)}{\pi m},\qquad h_\text{des}[0]=0.5.

At every even mm other than 0, sin⁡(πm/2)\sin(\pi m/2) is the sine of a whole number of half turns, which is 0. So every other tap is 0, like a checkerboard on which half the squares are empty by design. The window cannot undo that, because it multiplies each tap and 0 times anything is 0. The Kaiser window is 1 at its centre, so the centre tap stays 0.5.

The instrument below draws a 23-tap half-band filter, its taps and its gain, and then turns the gain curve half a turn.

Half-band: every other tap is zero

A 23-tap low-pass with its cutoff at 0.5π: the ideal times a Kaiser window, β = 3.40.

taps that are 0
not yet
gain at 0.5π
not yet
0.00 / 12.00 s
Describe this picture

Two stacked panels and no control, for a 23-tap low-pass with its cutoff at 0.5π0.5\pi: the ideal times a Kaiser window, β=3.40\beta=3.40. The taps panel plots h[n]h[n] against n−αn-\alpha from −11 to 11. Taps that are not zero are stems with dot heads; zero taps are open circles on the axis, and the first one is labelled “zero”. The gain panel plots the zero-phase response Hzp(Ω)H_\text{zp}(\Omega) of 17.3 against Ω\Omega from 0 to π\pi as one solid curve, with a filled diamond at (0.5π,0.5)(0.5\pi, 0.5). The readouts are the taps that are 0 and the gain at 0.5π0.5\pi, which read “not yet” until their part is drawn.

The clip lasts 12 s. First the taps appear from the centre outwards, and at 3.5 s the readout shows that 10 of the 23 taps are 0, at every even mm except the centre. Then the curve draws, and at 7.25 s the gain at 0.5π0.5\pi reads 0.500. Next a dashed copy of the curve turns half a turn about the diamond and lands on the curve. The end caption gives Hzp(Ω)+Hzp(π−Ω)=1H_\text{zp}(\Omega)+H_\text{zp}(\pi-\Omega)=1: the pass-band ripple mirrors the stop band’s, and only 13 of the 23 taps need a multiplication.

Watch the dashed copy as it turns. It lands on the curve at every point, ripples included. Why? From 17.3, a symmetric filter of odd length has

Hzp(Ω)=h[α]+2∑m=1αh[α+m]cos⁡(mΩ).H_\text{zp}(\Omega)=h[\alpha]+2\sum_{m=1}^{\alpha}h[\alpha+m]\cos(m\Omega).

In a half-band filter only the odd mm are left in the sum. For odd mm, cos⁡(m(π−Ω))=−cos⁡(mΩ)\cos(m(\pi-\Omega))=-\cos(m\Omega), so

Hzp(π−Ω)=h[α]−2∑m oddh[α+m]cos⁡(mΩ).H_\text{zp}(\pi-\Omega)=h[\alpha]-2\sum_{m\text{ odd}}h[\alpha+m]\cos(m\Omega).

Add the two lines and every cosine cancels. Only 2h[α]=12h[\alpha]=1 is left, which is Hzp(Ω)+Hzp(π−Ω)=1H_\text{zp}(\Omega)+H_\text{zp}(\pi-\Omega)=1. A ripple of 0.0035 above 1 at some Ω\Omega in the pass band is a ripple of 0.0035 above 0 at π−Ω\pi-\Omega in the stop band.

Half-band filters are used where a signal’s rate is halved or doubled, in Downsampling and decimation (22.1) and Upsampling and interpolation (22.2). Halving the rate throws away half of the outputs, and half of the taps are zero. So a cascade of half-band stages is the cheapest way to lower a rate by a power of 2.

A Hilbert transformer

The third filter, in its ideal form, changes no sizes. It turns every cosine into a sine. A Hilbert transformer has the ideal response

Hdes(Ω)={−j,0<Ω<π,+j,−π<Ω<0.H_\text{des}(\Omega)=\begin{cases}-j, & 0<\Omega<\pi,\\ +j, & -\pi<\Omega<0.\end{cases}

Its gain is 1 everywhere except at 0 and π\pi. Its phase is −π/2-\pi/2, a quarter turn back, for positive frequencies. A cosine is two arrows, cos⁡(Ω0n)=12ejΩ0n+12e−jΩ0n\cos(\Omega_0n)=\tfrac12e^{j\Omega_0n}+\tfrac12e^{-j\Omega_0n}. The filter multiplies the first arrow by −j-j and the second by +j+j, which gives 12j(ejΩ0n−e−jΩ0n)=sin⁡(Ω0n)\tfrac{1}{2j}\big(e^{j\Omega_0n}-e^{-j\Omega_0n}\big)=\sin(\Omega_0n).

Its taps are again an inverse DTFT. Folding the negative frequencies onto the positive ones, as for the differentiator, leaves

hdes[m]=1π∫0πsin⁡(Ωm) dΩ=1−cos⁡(πm)πm.h_\text{des}[m]=\frac{1}{\pi}\int_{0}^{\pi}\sin(\Omega m)\,d\Omega=\frac{1-\cos(\pi m)}{\pi m}.

For odd mm, cos⁡(πm)=−1\cos(\pi m)=-1 and the taps are 2/(πm)2/(\pi m). For even mm, including m=0m=0, they are 0.

The taps are antisymmetric, and with an odd length that is type III again: its gain is forced to 0 at 0 and at π\pi (17.3). Its phase is −π/2−αΩ-\pi/2-\alpha\Omega. That is 17.3’s generalised linear phase with β=−π/2\beta=-\pi/2, because here the real factor HzpH_\text{zp} of 17.3 is negative.

The ideal jumps from +j+j to −j-j at Ω=0\Omega=0, and again at π\pi. No filter with a finite number of taps can jump. So the gain of a real design must fall to 0 near both ends, and type III makes it reach 0 exactly there. The figure shows a 31-tap design, windowed like the others.

h[n]0.50−0.5−15−10−5051015n − αgain |H|10.5000.25π0.5π0.75ππΩ (rad/sample)forced 0forced 0
Fig. A 31-tap Hilbert transformer: taps 2/(πm) at odd m, windowed (0.633 and 0.200 next to the centre), 0 at even m. Its gain is within 0.015 of 1 from 0.1π to 0.9π, but only 0.38 at 0.02π and 0 at 0 and π, as type III forces.

The figure is static, because The Hilbert transform and the analytic signal (27.2) gives the Hilbert transformer a page of its own. There it turns a real signal into a complex one whose size is the signal’s envelope.

The maths behind it · rotations in a plane

For each frequency, the cosine and the sine at that frequency span a two-dimensional space. The Hilbert transformer is a rotation in that plane: it maps cos⁡\cos to sin⁡\sin and sin⁡\sin to −cos⁡-\cos, a quarter turn (π/2\pi/2 rad), so applied twice it gives −1-1. The differentiator acts on the same planes as a quarter turn combined with a stretch by Ω\Omega.

Delay by a fraction of a sample

The last filter does nothing to a signal but delay it. Delaying by a whole number of samples is easy: z−n0z^{-n_0}. But what if two microphones are 7.25 samples apart, and you want to line up their signals?

A delay by a number of samples n0n_0 that is not a whole number is a fractional delay. Its output should be the wave read between the samples, y[n]=xc((n−n0)Ts)y[n]=x_c\big((n-n_0)T_s\big).

On Reconstruction (10.3) you rebuilt xcx_c from its samples by adding a sinc pulse at every sample. Read that sum at the time (n−n0)Ts(n-n_0)T_s, with Ts=1T_s=1:

y[n]=∑kx[k] sinc(n−n0−k).y[n]=\sum_kx[k]\,\mathrm{sinc}(n-n_0-k).

That is a convolution of xx with the taps h[n]=sinc(n−n0)h[n]=\mathrm{sinc}(n-n_0): samples of a sinc centred at n0n_0. The sinc never ends, so I keep 16 taps and taper them with a Hann window centred at n0n_0 too, w(t)=0.5+0.5cos⁡(πt/8)w(t)=0.5+0.5\cos(\pi t/8) for ∣t∣≤8\lvert t\rvert\le8. The taps are h[n]=sinc(t) w(t)h[n]=\mathrm{sinc}(t)\,w(t) at t=n−n0t=n-n_0, for n=0n=0 to 15.

Below, n0n_0 moves from 7 to 7.25 and then to 7.5.

Delay by a fraction of a sample

16 taps of a sinc centred at n_0, with a Hann window centred there too. Test signal cos(0.2πn).

n_0 = 7, a whole number: every tap is 0 except h[7] = 1. A plain delay, and the output samples sit on the input's.

delay n_0
7.00 samples
largest error
0.00000
0.00 / 12.00 s
Describe this picture

Two stacked panels for 16 taps of a sinc centred at n0n_0, with a Hann window centred there too, and the test signal cos⁡(0.2πn)\cos(0.2\pi n). The taps panel plots h[n]h[n] against the sample nn from 0 to 15: the taps as stems with dot heads, the continuous windowed sinc as a dashed curve labelled “shifted sinc”, and a dotted vertical line at n0n_0. The signal panel, for nn from 16 to 40, draws the wave cos⁡(0.2πt)\cos(0.2\pi t) as a thin dashed curve, the input samples as dots and the output samples as filled squares, moved back by n0n_0. The readouts are the delay n0n_0, in samples to 2 decimals, and the largest error, the largest gap between an output sample and the wave, to 5 decimals.

The clip lasts 12 s. It holds n0=7n_0=7 first: every tap is 0 except h[7]=1h[7]=1, a plain delay, and the output samples sit on the input’s, with an error of 0.00000. Then the sinc and its window slide right to n0=7.25n_0=7.25, held at 5.5 s: every tap changes, 0.898 at n=7n=7, 0.294 at n=8n=8 and −0.169 at n=6n=6, and the output samples land a quarter of the way to the next input sample, on the same wave, with an error of 0.00012. At the end n0=7.5n_0=7.5, halfway: the taps are symmetric about 7.5 (type II of 17.3), and the error is 0.00018. From 12 s the dotted n0n_0 line is a handle, named “Delay n_0”, from 7 to 8 in steps of 0.01, with value text like “7.50 samples”. The arrow keys move it by 0.01, Page Up and Page Down by 0.1, and Home and End jump to 7 and 8. At 7, 7.25 and 7.5 the clip’s captions come back; elsewhere the caption reads like “n_0 = 7.30: largest error 0.00015.” The delay is kept in the link, as fraction.n0.

Notice the taps at n0=7n_0=7: every one is 0 but h[7]h[7], because a sinc is 0 at every whole number but its centre. Move n0n_0 by a quarter of a sample, and every tap changes.

When the clip has finished, drag the dotted n0n_0 line yourself, from 7 to 8, or use the arrow keys.

Why does it work? The taps are the reconstruction pulses of 10.3, read at times shifted by n0n_0, so y[n]≈xc((n−n0)Ts)y[n]\approx x_c\big((n-n_0)T_s\big). The window keeps the sum short.

It fails near π\pi. At n0=7.5n_0=7.5 the taps are type II, which forces the gain to 0 at π\pi (17.3), and at 0.9π0.9\pi the gain is already 0.70. At n0=7.25n_0=7.25 it is 0.863 at 0.9π0.9\pi. Our test wave at 0.2π0.2\pi is far from that edge.

An all-pass filter from All-pass systems (17.1) also gives a fractional delay. Its gain is 1 at every frequency, but its phase is bent, so the delay is not the same at every frequency.

Worked example

Here are the numbers behind the four filters, so you can check them by hand or in a few lines of code.

  1. First difference as a differentiator. Its gain 2sin⁡(Ω/2)2\sin(\Omega/2) is 0.12558 at 0.04π0.04\pi, against Ω=0.12566\Omega=0.12566, and 2 at π\pi, against π\pi. White noise of RMS xnoise,rmsx_\text{noise,rms} comes out of a filter with RMS xnoise,rms∑h[n]2x_\text{noise,rms}\sqrt{\sum h[n]^2}, its noise gain from Simple smoothing filters (18.2). For the first difference that is 12+12=2=1.414\sqrt{1^2+1^2}=\sqrt2=1.414. For the 61-tap design with Ωc=0.2π\Omega_c=0.2\pi it is 0.149. Times the measured noise RMS of 0.0530, that predicts 0.0750 and 0.0079 of noise in the outputs, close to the errors 0.0752 and 0.0075. Almost all of each error is noise.
  1. Band-limited taps. With Ωc=0.2π\Omega_c=0.2\pi and 61 taps, the formula gives −0.02529-0.02529 at m=1m=1 and −0.04478-0.04478 at m=2m=2. The window makes them h[31]=−0.0253h[31]=-0.0253 and h[32]=−0.0445h[32]=-0.0445, and h[30]=0h[30]=0. The taps are exactly antisymmetric.
  1. Half-band. Of the 23 taps, 13 are not zero, and the centre is 0.5. The nearest taps are 1/π=0.3181/\pi=0.318 before the window and 0.315 after it. The pass band deviates from 1 by at most 0.0035 up to 0.3π0.3\pi. The stop band from 0.7π0.7\pi is at most 0.0035, which is −49.0 dB. The two are mirror images.
  1. Hilbert, 31 taps. Before the window the taps next to the centre are 2/π=0.6372/\pi=0.637 and 2/(3π)=0.2122/(3\pi)=0.212. After it they are 0.633 and 0.200. The gain is within 0.0143 of 1 from 0.1π0.1\pi to 0.9π0.9\pi, but only 0.382 at 0.02π0.02\pi and 0.812 at 0.05π0.05\pi. Multiply HH by ej15Ωe^{j15\Omega} to take out the delay: the real part of what is left is 0 to within 10−1410^{-14}, so the phase is −π/2−15Ω-\pi/2-15\Omega for every Ω\Omega between 0 and π\pi.
  1. Fractional delay. At n0=7.25n_0=7.25 the taps from n=5n=5 to 9 are 0.082, −0.169, 0.898, 0.294 and −0.114. At n0=7.5n_0=7.5 they are 0.099, −0.194, 0.631, 0.631 and −0.194. The largest errors on cos⁡(0.2πn)\cos(0.2\pi n) are 0, 0.00012 and 0.00018 for n0=7n_0=7, 7.25 and 7.5. The group delay τg\tau_g (12.4) at 0.1π0.1\pi, 0.25π0.25\pi, 0.5π0.5\pi and 0.75π0.75\pi equals n0n_0 to 3 decimals, both for 7.25 and for 7.5.

Where you’ll meet this

Band-limited differentiators find velocity from position and acceleration from velocity in sensors, robotics and vehicle logs, where the signal is slow and the noise is not. Half-band stages do most of the work in decimators and interpolators (22.1, 22.2). Hilbert transformers make the analytic signal (27.2), which radio receivers and envelope detectors use.

Fractional delays align microphone arrays and steer beamformers. They change sample rates by any ratio in Resampling by any factor (22.3), and they tune the strings and tubes of physical models in Audio effects (29.2). Modems use them to read a received signal at the right instant, in Digital modulation and OFDM (27.5).

One more special FIR filter is the minimum-phase one. Flip the zeros of a linear-phase design that lie outside the unit circle, as on Minimum phase (17.2), and the gain stays while the delay shrinks.

Reference card

FilterIdeal responseTaps hdes[m]h_\text{des}[m]Type
Differentiator, band-limitedjΩj\Omega for ∣Ω∣<Ωc\lvert\Omega\rvert < \Omega_cΩcmcos⁡Ωcm−sin⁡Ωcmπm2\dfrac{\Omega_cm\cos\Omega_cm-\sin\Omega_cm}{\pi m^2}III (IV for full band)
Half-band low-pass1 for ∣Ω∣<0.5π\lvert\Omega\rvert < 0.5\pisin⁡(πm/2)πm\dfrac{\sin(\pi m/2)}{\pi m}, 0 at even m≠0m\ne0I; Hzp(Ω)+Hzp(π−Ω)=1H_\text{zp}(\Omega)+H_\text{zp}(\pi-\Omega)=1
Hilbert transformer−j sgn(Ω)-j\,\mathrm{sgn}(\Omega)2πm\dfrac{2}{\pi m} at odd mm, 0 at evenIII; 0 at 0 and π
Fractional delaye−jΩn0e^{-j\Omega n_0}sinc(n−n0)\mathrm{sinc}(n-n_0), windowedII at half-samples; fails near π
Noise through a filterRMS × ∑h[n]2\sqrt{\sum h[n]^2}first difference: √218.2

End of lesson 19.4

Where to go next.

Phasorium
LibraryEvery lesson, in order

Parts

About Phasorium
Look