Digital electronics

**Digital electronics**, **digital technology** or **digital (electronic) circuits** are electronics that operate on digital signals. In contrast, analog circuits manipulate analog signals whose performance is more subject to manufacturing tolerance, signal attenuation and noise. Digital techniques are helpful because it is much easier to get an electronic device to switch into one of a number of known states than to accurately reproduce a continuous range of values.

Digital electronic circuits are usually made from large assemblies of logic gates (often printed on integrated circuits), simple electronic representations of Boolean logic functions.

## Digital signal processing

**Digital signal processing** (**DSP**) is the use of digital processing, such as by computers or more specialized digital signal processors, to perform a wide variety of signal processing operations. The signals processed in this manner are a sequence of numbers that represent samples of a continuous variable in a domain such as time, space, or frequency.

Digital signal processing and analog signal processing are subfields of signal processing. DSP applications include audio and speech processing, sonar, radar and other sensor array processing, spectral density estimation, statistical signal processing, digital image processing, data compression, video coding, audio coding, image compression, signal processing for telecommunications, control systems, biomedical engineering, and seismology, among others.

DSP can involve linear or nonlinear operations. Nonlinear signal processing is closely related to nonlinear system identification and can be implemented in the time, frequency, and spatio-temporal domains.

The application of digital computation to signal processing allows for many advantages over analog processing in many applications, such as error detection and correction in transmission as well as data compression. Digital signal processing is also fundamental to digital technology, such as digital telecommunication and wireless communications. DSP is applicable to both streaming data and static (stored) data.

The most common processing approach in the time or space domain is enhancement of the input signal through a method called filtering. Digital filtering generally consists of some linear transformation of a number of surrounding samples around the current sample of the input or output signal. There are various ways to characterize filters; for example:

* A *linear* filter is a linear transformation of input samples; other filters are *nonlinear*. Linear filters satisfy the superposition principle, i.e. if an input is a weighted linear combination of different signals, the output is a similarly weighted linear combination of the corresponding output signals.
* A *causal* filter uses only previous samples of the input or output signals; while a *non-causal* filter uses future input samples. A non-causal filter can usually be changed into a causal filter by adding a delay to it.
* A *time-invariant* filter has constant properties over time; other filters such as adaptive filters change in time.
* A *stable* filter produces an output that converges to a constant value with time, or remains bounded within a finite interval. An *unstable* filter can produce an output that grows without bounds, with bounded or even zero input.
* A finite impulse response (FIR) filter uses only the input signals, while an infinite impulse response (IIR) filter uses both the input signal and previous samples of the output signal. FIR filters are always stable, while IIR filters may be unstable.

A filter can be represented by a block diagram, which can then be used to derive a sample processing algorithm to implement the filter with hardware instructions. A filter may also be described as a difference equation, a collection of zeros and poles or an impulse response or step response.

The output of a linear digital filter to any given input may be calculated by convolving the input signal with the impulse response.

## Discrete-time Fourier transform

In mathematics, the **discrete-time Fourier transform** (**DTFT**) is a form of Fourier analysis that is applicable to a sequence of values.

The DTFT is often used to analyze samples of a continuous function. The term *discrete-time* refers to the fact that the transform operates on discrete data, often samples whose interval has units of time. From uniformly spaced samples it produces a function of frequency that is a periodic summation of the continuous Fourier transform of the original continuous function. Under certain theoretical conditions, described by the sampling theorem, the original continuous function can be recovered perfectly from the DTFT and thus from the original discrete samples. The DTFT itself is a continuous function of frequency, but discrete samples of it can be readily calculated via the discrete Fourier transform (DFT) (see #Sampling the DTFT § Notes), which is by far the most common method of modern Fourier analysis.

Both transforms are invertible. The inverse DTFT is the original sampled data sequence. The inverse DFT is a periodic summation of the original sequence. The fast Fourier transform (FFT) is an algorithm for computing one cycle of the DFT, and its inverse produces one cycle of the inverse DFT.

The discrete-time Fourier transform of a discrete set of real or complex numbers *x*[*n*], for all integers n, is a Fourier series, which produces a periodic function of a frequency variable. When the frequency variable, ω, has normalized units of *radians/sample*, the periodicity is 2π, and the Fourier series is:

X

2
π

(
ω

# n
−
∞

∞

x
[
n
]

e

−
i
ω
n

.

{\displaystyle X\_{2\pi }(\omega )=\sum \_{n=-\infty }^{\infty }x[n]\,e^{-i\omega n}.}

The utility of this frequency domain function is rooted in the Poisson summation formula. Let *X*(*f*) be the Fourier transform of any function, *x*(*t*), whose samples at some interval T (*seconds*) are equal (or proportional) to the *x*[*n*] sequence, i.e. *T*⋅*x*(*nT*) = *x*[*n*]. Then the periodic function represented by the Fourier series is a periodic summation of *X*(*f*) in terms of frequency f in hertz (*cycles/sec*):

X

1

/

T

(
f
# )

X

2
π

(
2
π
f
T
)

≜

∑

# n
−
∞

∞

T
⋅
x
(
n
T
)

⏟

x
[
n
]

e

−
i
2
π
f
T
n

=

P
o
i
s
s
o
n

f
.

∑

# k
−
∞

∞

X

(

f
−
k

/

T

)

.

{\displaystyle X\_{1/T}(f)=X\_{2\pi }(2\pi fT)\ \triangleq \sum \_{n=-\infty }^{\infty }\underbrace {T\cdot x(nT)} \_{x[n]}\ e^{-i2\pi fTn}\;{\stackrel {\mathrm {Poisson\;f.} }{=}}\;\sum \_{k=-\infty }^{\infty }X\left(f-k/T\right).}

The integer k has units of *cycles/sample*, and 1/*T* is the sample-rate, fs (*samples/sec*). So *X*1/*T*(*f*) comprises exact copies of *X*(*f*) that are shifted by multiples of fs hertz and combined by addition. For sufficiently large fs the *k* = 0 term can be observed in the region [−*fs/2, fs/2*] with little or no distortion (aliasing) from the other terms. In Fig.1, the extremities of the distribution in the upper left corner are masked by aliasing in the periodic summation (lower left).

We also note that *e*−*i2πfTn* is the Fourier transform of *δ*(*t* − *nT*). Therefore, an alternative definition of DTFT is:

X

1

/

T

(
f
# )

F

{

∑

# n
−
∞

∞

x
[
n
]
⋅
δ
(
t
−
n
T
)

}

{\displaystyle X\_{1/T}(f)={\mathcal {F}}\left\{\sum \_{n=-\infty }^{\infty }x[n]\cdot \delta (t-nT)\right\}}

The modulated Dirac comb function is a mathematical abstraction sometimes referred to as *impulse sampling*.

In fact **Eq.2** is often justified as follows:

F

{

∑

# n
−
∞

∞

T
⋅
x
(
n
T
)
⋅
δ
(
t
−
n
T
)

}

=

F

{

x
(
t
)
⋅
T

∑

# n
−
∞

∞

δ
(
t
−
n
T
)

}

=
X
(
f
)
∗

F

{

T

∑

# n
−
∞

∞

δ
(
t
−
n
T
)

}

=
X
(
f
)
∗

∑

# k
−
∞

∞

δ

(

f
−

k
T

)

=

∑

# k
−
∞

∞

X

(

f
−

k
T

)

.

{\displaystyle {\begin{aligned}{\mathcal {F}}\left\{\sum \_{n=-\infty }^{\infty }T\cdot x(nT)\cdot \delta (t-nT)\right\}&={\mathcal {F}}\left\{x(t)\cdot T\sum \_{n=-\infty }^{\infty }\delta (t-nT)\right\}\\&=X(f)\*{\mathcal {F}}\left\{T\sum \_{n=-\infty }^{\infty }\delta (t-nT)\right\}\\&=X(f)\*\sum \_{k=-\infty }^{\infty }\delta \left(f-{\frac {k}{T}}\right)\\&=\sum \_{k=-\infty }^{\infty }X\left(f-{\frac {k}{T}}\right).\end{aligned}}}

### Discrete Fourier transform

In mathematics, the **discrete Fourier transform** (**DFT**) converts a finite sequence of equally-spaced samples of a function into a same-length sequence of equally-spaced samples of the discrete-time Fourier transform (DTFT), which is a complex-valued function of frequency. The interval at which the DTFT is sampled is the reciprocal of the duration of the input sequence. An inverse DFT is a Fourier series, using the DTFT samples as coefficients of complex sinusoids at the corresponding DTFT frequencies. It has the same sample-values as the original input sequence. The DFT is therefore said to be a frequency domain representation of the original input sequence. If the original sequence spans all the non-zero values of a function, its DTFT is continuous (and periodic), and the DFT provides discrete samples of one cycle. If the original sequence is one cycle of a periodic function, the DFT provides all the non-zero values of one DTFT cycle.

The DFT is the most important discrete transform, used to perform Fourier analysis in many practical applications. In digital signal processing, the function is any quantity or signal that varies over time, such as the pressure of a sound wave, a radio signal, or daily temperature readings, sampled over a finite time interval (often defined by a window function). In image processing, the samples can be the values of pixels along a row or column of a raster image. The DFT is also used to efficiently solve partial differential equations, and to perform other operations such as convolutions or multiplying large integers.

Since it deals with a finite amount of data, it can be implemented in computers by numerical algorithms or even dedicated hardware. These implementations usually employ efficient fast Fourier transform (FFT) algorithms; so much so that the terms "FFT" and "DFT" are often used interchangeably. Prior to its current usage, the "FFT" initialism may have also been used for the ambiguous term "finite Fourier transform".

The *discrete Fourier transform* transforms a sequence of *N* complex numbers

{

x

n

}

:=

x

0

,

x

1

,
…
,

x

N
−
1

{\displaystyle \left\{\mathbf {x\_{n}} \right\}:=x\_{0},x\_{1},\ldots ,x\_{N-1}}

 into another sequence of complex numbers,

{

X

k

}

:=

X

0

,

X

1

,
…
,

X

N
−
1

,

{\displaystyle \left\{\mathbf {X\_{k}} \right\}:=X\_{0},X\_{1},\ldots ,X\_{N-1},}

 which is defined by

X

k

=

∑

# n
0

N
−
1

x

n

⋅

e

−

i
2
π

N

k
n

=

∑

# n
0

N
−
1

x

n

⋅

[

cos
⁡

(

2
π

N

k
n

)

−
i
⋅
sin
⁡

(

2
π

N

k
n

)

]

,

{\displaystyle {\begin{aligned}X\_{k}&=\sum \_{n=0}^{N-1}x\_{n}\cdot e^{-{\frac {i2\pi }{N}}kn}\\&=\sum \_{n=0}^{N-1}x\_{n}\cdot \left[\cos \left({\frac {2\pi }{N}}kn\right)-i\cdot \sin \left({\frac {2\pi }{N}}kn\right)\right],\end{aligned}}}

where the last expression follows from the first one by Euler's formula.

The transform is sometimes denoted by the symbol

F

{\displaystyle {\mathcal {F}}}

, as in

X

=

F

{

x

}

{\displaystyle \mathbf {X} ={\mathcal {F}}\left\{\mathbf {x} \right\}}

 or

F

(

x

)

{\displaystyle {\mathcal {F}}\left(\mathbf {x} \right)}

 or

F

x

{\displaystyle {\mathcal {F}}\mathbf {x} }

.

As a linear transformation on a finite-dimensional vector space, the DFT expression can also be written in terms of a DFT matrix; when scaled appropriately it becomes a unitary matrix and the *X**k* can thus be viewed as coefficients of *x* in an orthonormal basis.

### Discrete cosine transform

A **discrete cosine transform** (**DCT**) expresses a finite sequence of data points in terms of a sum of cosine functions oscillating at different frequencies. The DCT, first proposed by Nasir Ahmed in 1972, is the most widely used transformation technique in signal processing and data compression. It is used in most digital media, including digital images (such as JPEG and HEIF, where small high-frequency components can be discarded), digital video (such as MPEG, H.26x and Vorbis), digital audio (such as Dolby Digital, MP3 and AAC), digital television (such as SDTV, HDTV and VOD), digital radio (such as AAC+ and DAB+), and speech coding (such as AAC-LD, Siren and Opus). DCTs are also important to numerous other applications in science and engineering, such as digital signal processing, communications devices, reducing network bandwidth usage, and spectral methods for the numerical solution of partial differential equations.

The use of cosine rather than sine functions is critical for compression, since it turns out (as described below) that fewer cosine functions are needed to approximate a typical signal, whereas for differential equations the cosines express a particular choice of boundary conditions. In particular, a DCT is a Fourier-related transform similar to the discrete Fourier transform (DFT), but using only real numbers. The DCTs are generally related to Fourier Series coefficients of a periodically and symmetrically extended sequence whereas DFTs are related to Fourier Series coefficients of a periodically extended sequence. DCTs are equivalent to DFTs of roughly twice the length, operating on real data with even symmetry (since the Fourier transform of a real and even function is real and even), whereas in some variants the input and/or output data are shifted by half a sample. There are eight standard DCT variants, of which four are common.

The most common variant of discrete cosine transform is the type-II DCT, which is often called simply "the DCT". This was the original DCT, first proposed by Nasir Ahmed in 1972. Its inverse, the type-III DCT, is correspondingly often called simply "the inverse DCT" or "the IDCT". Two related transforms are the discrete sine transform (DST), which is equivalent to a DFT of real and *odd* functions, and the modified discrete cosine transform (MDCT), which is based on a DCT of *overlapping* data. Multidimensional DCTs (MD DCTs) are developed to extend the concept of DCT on MD signals. There are several algorithms to compute MD DCT. A variety of fast algorithms have been developed to reduce the computational complexity of implementing DCT. One of these is the integer DCT (IntDCT), an integer approximation of the standard DCT, used in several ISO/IEC and ITU-T international standards.

DCT compression, also known as block compression, compresses data in sets of discrete DCT blocks. DCT blocks can have a number of sizes, including 8x8 pixels for the standard DCT, and varied integer DCT sizes between 4x4 and 32x32 pixels. The DCT has a strong "energy compaction" property, capable of achieving high quality at high data compression ratios. However, blocky compression artifacts can appear when heavy DCT compression is applied.

Like any Fourier-related transform, discrete cosine transforms (DCTs) express a function or a signal in terms of a sum of sinusoids with different frequencies and amplitudes. Like the discrete Fourier transform (DFT), a DCT operates on a function at a finite number of discrete data points. The obvious distinction between a DCT and a DFT is that the former uses only cosine functions, while the latter uses both cosines and sines (in the form of complex exponentials). However, this visible difference is merely a consequence of a deeper distinction: a DCT implies different boundary conditions from the DFT or other related transforms.

The Fourier-related transforms that operate on a function over a finite domain, such as the DFT or DCT or a Fourier series, can be thought of as implicitly defining an *extension* of that function outside the domain. That is, once you write a function

f
(
x
)

{\displaystyle f(x)}

 as a sum of sinusoids, you can evaluate that sum at any

x

{\displaystyle x}

, even for

x

{\displaystyle x}

 where the original

f
(
x
)

{\displaystyle f(x)}

 was not specified. The DFT, like the Fourier series, implies a periodic extension of the original function. A DCT, like a cosine transform, implies an even extension of the original function.

However, because DCTs operate on *finite*, *discrete* sequences, two issues arise that do not apply for the continuous cosine transform. First, one has to specify whether the function is even or odd at *both* the left and right boundaries of the domain (i.e. the min-*n* and max-*n* boundaries in the definitions below, respectively). Second, one has to specify around *what point* the function is even or odd. In particular, consider a sequence *abcd* of four equally spaced data points, and say that we specify an even *left* boundary. There are two sensible possibilities: either the data are even about the sample *a*, in which case the even extension is *dcbabcd*, or the data are even about the point *halfway* between *a* and the previous point, in which case the even extension is *dcbaabcd* (*a* is repeated).

These choices lead to all the standard variations of DCTs and also discrete sine transforms (DSTs).
Each boundary can be either even or odd (2 choices per boundary) and can be symmetric about a data point or the point halfway between two data points (2 choices per boundary), for a total of 2 × 2 × 2 × 2 = 16 possibilities. Half of these possibilities, those where the *left* boundary is even, correspond to the 8 types of DCT; the other half are the 8 types of DST.

These different boundary conditions strongly affect the applications of the transform and lead to uniquely useful properties for the various DCT types. Most directly, when using Fourier-related transforms to solve partial differential equations by spectral methods, the boundary conditions are directly specified as a part of the problem being solved. Or, for the MDCT (based on the type-IV DCT), the boundary conditions are intimately involved in the MDCT's critical property of time-domain aliasing cancellation. In a more subtle fashion, the boundary conditions are responsible for the "energy compactification" properties that make DCTs useful for image and audio compression, because the boundaries affect the rate of convergence of any Fourier-like series.

In particular, it is well known that any discontinuities in a function reduce the rate of convergence of the Fourier series, so that more sinusoids are needed to represent the function with a given accuracy. The same principle governs the usefulness of the DFT and other transforms for signal compression; the smoother a function is, the fewer terms in its DFT or DCT are required to represent it accurately, and the more it can be compressed. (Here, we think of the DFT or DCT as approximations for the Fourier series or cosine series of a function, respectively, in order to talk about its "smoothness".) However, the implicit periodicity of the DFT means that discontinuities usually occur at the boundaries: any random segment of a signal is unlikely to have the same value at both the left and right boundaries. (A similar problem arises for the DST, in which the odd left boundary condition implies a discontinuity for any function that does not happen to be zero at that boundary.) In contrast, a DCT where *both* boundaries are even *always* yields a continuous extension at the boundaries (although the slope is generally discontinuous). This is why DCTs, and in particular DCTs of types I, II, V, and VI (the types that have two even boundaries) generally perform better for signal compression than DFTs and DSTs. In practice, a type-II DCT is usually preferred for such applications, in part for reasons of computational convenience.

### Wavelet transform

**Wavelet compression** is a form of data compression well suited for image compression (sometimes also video compression and audio compression). Notable implementations are JPEG 2000, DjVu and ECW for still images, CineForm, and the BBC's Dirac. The goal is to store image data in as little space as possible in a file. Wavelet compression can be either lossless or lossy. Wavelet coding is a variant of discrete cosine transform (DCT) coding that uses wavelets instead of DCT's block-based algorithm.

Using a wavelet transform, the wavelet compression methods are adequate for representing transients, such as percussion sounds in audio, or high-frequency components in two-dimensional images, for example an image of stars on a night sky. This means that the transient elements of a data signal can be represented by a smaller amount of information than would be the case if some other transform, such as the more widespread discrete cosine transform, had been used.

Discrete wavelet transform has been successfully applied for the compression of electrocardiograph (ECG) signals In this work, the high correlation between the corresponding wavelet coefficients of signals of successive cardiac cycles is utilized employing linear prediction.

Wavelet compression is not good for all kinds of data: transient signal characteristics mean good wavelet compression, while smooth, periodic signals are better compressed by other methods, particularly traditional harmonic compression (frequency domain, as by Fourier transforms and related).

See Diary Of An x264 Developer: The problems with wavelets (2010) for discussion of practical issues of current methods using wavelets for video compression.

First a wavelet transform is applied. This produces as many coefficients as there are pixels in the image (i.e., there is no compression yet since it is only a transform). These coefficients can then be compressed more easily because the information is statistically concentrated in just a few coefficients. This principle is called transform coding. After that, the coefficients are quantized and the quantized values are entropy encoded and/or run length encoded.

A few 1D and 2D applications of wavelet compression use a technique called "wavelet footprints".

## Z-transform

In mathematics and signal processing, the **Z-transform** converts a discrete-time signal, which is a sequence of real or complex numbers, into a complex frequency-domain representation.

It can be considered as a discrete-time equivalent of the Laplace transform. This similarity is explored in the theory of time-scale calculus.

The *bilateral* or *two-sided* Z-transform of a discrete-time signal

x
[
n
]

{\displaystyle x[n]}

 is the formal power series

X
(
z
)

{\displaystyle X(z)}

 defined as

X
(
z
# )

Z

{
x
[
n
]

# n
−
∞

∞

x
[
n
]

z

−
n

{\displaystyle X(z)={\mathcal {Z}}\{x[n]\}=\sum \_{n=-\infty }^{\infty }x[n]z^{-n}}

where

n

{\displaystyle n}

 is an integer and

z

{\displaystyle z}

 is, in general, a complex number:

# z
A

e

j
ϕ

=
A
⋅
(
cos
⁡

ϕ

j
sin
⁡

ϕ

)

{\displaystyle z=Ae^{j\phi }=A\cdot (\cos {\phi }+j\sin {\phi })}

where

A

{\displaystyle A}

 is the magnitude of

z

{\displaystyle z}

,

j

{\displaystyle j}

 is the imaginary unit, and

ϕ

{\displaystyle \phi }

 is the *complex argument* (also referred to as *angle* or *phase*) in radians.

Alternatively, in cases where

x
[
n
]

{\displaystyle x[n]}

 is defined only for

n
≥
0

{\displaystyle n\geq 0}

, the *single-sided* or *unilateral* Z-transform is defined as

X
(
z
# )

Z

{
x
[
n
]

# n
0

∞

x
[
n
]

z

−
n

.

{\displaystyle X(z)={\mathcal {Z}}\{x[n]\}=\sum \_{n=0}^{\infty }x[n]z^{-n}.}

In signal processing, this definition can be used to evaluate the Z-transform of the unit impulse response of a discrete-time causal system.

An important example of the unilateral Z-transform is the probability-generating function, where the component

x
[
n
]

{\displaystyle x[n]}

 is the probability that a discrete random variable takes the value

n

{\displaystyle n}

, and the function

X
(
z
)

{\displaystyle X(z)}

 is usually written as

X
(
s
)

{\displaystyle X(s)}

 in terms of

# s

z

−
1

{\displaystyle s=z^{-1}}

. The properties of Z-transforms (below) have useful interpretations in the context of probability theory.

For values of

z

{\displaystyle z}

 in the region

z

=
1

{\displaystyle |z|=1}

, known as the unit circle, we can express the transform as a function of a single, real variable, ω, by defining

# z

e

j
ω

{\displaystyle z=e^{j\omega }}

. And the bi-lateral transform reduces to a Fourier series:

∑

# n
−
∞

∞

x
[
n
]

z

−
n

=

∑

# n
−
∞

∞

x
[
n
]

e

−
j
ω
n

,

{\displaystyle \sum \_{n=-\infty }^{\infty }x[n]\ z^{-n}=\sum \_{n=-\infty }^{\infty }x[n]\ e^{-j\omega n},}

which is also known as the discrete-time Fourier transform (DTFT) of the

x
[
n
]

{\displaystyle x[n]}

 sequence. This 2π-periodic function is the periodic summation of a Fourier transform, which makes it a widely used analysis tool. To understand this, let

X
(
f
)

{\displaystyle X(f)}

 be the Fourier transform of any function,

x
(
t
)

{\displaystyle x(t)}

, whose samples at some interval, *T*, equal the x[*n*] sequence. Then the DTFT of the *x*[*n*] sequence can be written as follows.

∑

# n
−
∞

∞

x
(
n
T
)

⏞

x
[
n
]

e

−
j
2
π
f
n
T

⏟

DTFT

=

1
T

∑

# k
−
∞

∞

X
(
f
−
k

/

T
)
.

{\displaystyle \underbrace {\sum \_{n=-\infty }^{\infty }\overbrace {x(nT)} ^{x[n]}\ e^{-j2\pi fnT}} \_{\text{DTFT}}={\frac {1}{T}}\sum \_{k=-\infty }^{\infty }X(f-k/T).}

When *T* has units of seconds,

f

{\displaystyle \scriptstyle f}

 has units of hertz. Comparison of the two series reveals that

# ω
2
π
f
T

{\displaystyle \scriptstyle \omega =2\pi fT}

  is a normalized frequency with units of *radians per sample*. The value ω=2π corresponds to

# f

1
T

{\displaystyle \scriptstyle f={\frac {1}{T}}}

 Hz.  And now, with the substitution

# f

ω

2
π
T

,

{\displaystyle \scriptstyle f={\frac {\omega }{2\pi T}},}

  **Eq.4** can be expressed in terms of the Fourier transform, X(•)**:**

∑

# n
−
∞

∞

x
[
n
]

e

−
j
ω
n

=

1
T

∑

# k
−
∞

∞

X

(

ω

2
π
T

−

k
T

)

⏟

X

(

ω
−
2
π
k

2
π
T

)

.

{\displaystyle \sum \_{n=-\infty }^{\infty }x[n]\ e^{-j\omega n}={\frac {1}{T}}\sum \_{k=-\infty }^{\infty }\underbrace {X\left({\tfrac {\omega }{2\pi T}}-{\tfrac {k}{T}}\right)} \_{X\left({\frac {\omega -2\pi k}{2\pi T}}\right)}.}

As parameter T changes, the individual terms of **Eq.5** move farther apart or closer together along the f-axis. In **Eq.6** however, the centers remain 2π apart, while their widths expand or contract. When sequence *x*(*nT*) represents the impulse response of an LTI system, these functions are also known as its frequency response. When the

x
(
n
T
)

{\displaystyle x(nT)}

 sequence is periodic, its DTFT is divergent at one or more harmonic frequencies, and zero at all other frequencies. This is often represented by the use of amplitude-variant Dirac delta functions at the harmonic frequencies. Due to periodicity, there are only a finite number of unique amplitudes, which are readily computed by the much simpler discrete Fourier transform (DFT).  (See DTFT; periodic data.)

Main articles: Bilinear transform
The **bilinear transform** can be used to convert continuous-time filters (represented in the Laplace domain) into discrete-time filters (represented in the Z-domain), and vice versa. The following substitution is used:

# s

2
T

(
z
−
1
)

(
z
1
)

{\displaystyle s={\frac {2}{T}}{\frac {(z-1)}{(z+1)}}}

to convert some function

H
(
s
)

{\displaystyle H(s)}

 in the Laplace domain to a function

H
(
z
)

{\displaystyle H(z)}

 in the Z-domain (Tustin transformation), or

# z

2
s
T

2
−
s
T

{\displaystyle z={\frac {2+sT}{2-sT}}}

from the Z-domain to the Laplace domain. Through the bilinear transformation, the complex s-plane (of the Laplace transform) is mapped to the complex z-plane (of the z-transform). While this mapping is (necessarily) nonlinear, it is useful in that it maps the entire

j
ω

{\displaystyle j\omega }

 axis of the s-plane onto the unit circle in the z-plane. As such, the Fourier transform (which is the Laplace transform evaluated on the

j
ω

{\displaystyle j\omega }

 axis) becomes the discrete-time Fourier transform. This assumes that the Fourier transform exists; i.e., that the

j
ω

{\displaystyle j\omega }

 axis is in the region of convergence of the Laplace transform.

### Bilinear transform

The **bilinear transform** (also known as **Tustin's method**) is used in digital signal processing and discrete-time control theory to transform continuous-time system representations to discrete-time and vice versa.

The bilinear transform is a special case of a conformal mapping (namely, a Möbius transformation), often used to convert a transfer function

H

a

(
s
)

{\displaystyle H\_{a}(s)\ }

 of a linear, time-invariant (LTI) filter in the continuous-time domain (often called an analog filter) to a transfer function

H

d

(
z
)

{\displaystyle H\_{d}(z)\ }

 of a linear, shift-invariant filter in the discrete-time domain (often called a digital filter although there are analog filters constructed with switched capacitors that are discrete-time filters). It maps positions on the

j
ω

{\displaystyle j\omega \ }

 axis,

R
e
[
s
# ]
0

{\displaystyle Re[s]=0\ }

, in the s-plane to the unit circle,

z

=
1

{\displaystyle |z|=1\ }

, in the z-plane. Other bilinear transforms can be used to warp the frequency response of any discrete-time linear system (for example to approximate the non-linear frequency resolution of the human auditory system) and are implementable in the discrete domain by replacing a system's unit delays

(

z

−
1

)

{\displaystyle \left(z^{-1}\right)\ }

 with first order all-pass filters.

The transform preserves stability and maps every point of the frequency response of the continuous-time filter,

H

a

(
j

ω

a

)

{\displaystyle H\_{a}(j\omega \_{a})\ }

 to a corresponding point in the frequency response of the discrete-time filter,

H

d

(

e

j

ω

d

T

)

{\displaystyle H\_{d}(e^{j\omega \_{d}T})\ }

 although to a somewhat different frequency, as shown in the Frequency warping section below. This means that for every feature that one sees in the frequency response of the analog filter, there is a corresponding feature, with identical gain and phase shift, in the frequency response of the digital filter but, perhaps, at a somewhat different frequency. This is barely noticeable at low frequencies but is quite evident at frequencies close to the Nyquist frequency.

The bilinear transform is a first-order approximation of the natural logarithm function that is an exact mapping of the *z*-plane to the *s*-plane. When the Laplace transform is performed on a discrete-time signal (with each element of the discrete-time sequence attached to a correspondingly delayed unit impulse), the result is precisely the Z transform of the discrete-time sequence with the substitution of

z

=

e

s
T

=

e

s
T

/

2

e

−
s
T

/

2

≈

1
s
T

/

2

1
−
s
T

/

2

{\displaystyle {\begin{aligned}z&=e^{sT}\\&={\frac {e^{sT/2}}{e^{-sT/2}}}\\&\approx {\frac {1+sT/2}{1-sT/2}}\end{aligned}}}

where

T

{\displaystyle T\ }

 is the numerical integration step size of the trapezoidal rule used in the bilinear transform derivation; or, in other words, the sampling period. The above bilinear approximation can be solved for

s

{\displaystyle s\ }

 or a similar approximation for

# s
(
1

/

T
)
ln
⁡
(
z
)

{\displaystyle s=(1/T)\ln(z)\ \ }

 can be performed.

The inverse of this mapping (and its first-order bilinear approximation) is

s

=

1
T

ln
⁡
(
z
)

=

2
T

[

z
−
1

z
1

1
3

(

z
−
1

z
1

)

3

1
5

(

z
−
1

z
1

)

5

1
7

(

z
−
1

z
1

)

7

⋯

]

≈

2
T

z
−
1

z
1

=

2
T

1
−

z

−
1

1

z

−
1

{\displaystyle {\begin{aligned}s&={\frac {1}{T}}\ln(z)\\&={\frac {2}{T}}\left[{\frac {z-1}{z+1}}+{\frac {1}{3}}\left({\frac {z-1}{z+1}}\right)^{3}+{\frac {1}{5}}\left({\frac {z-1}{z+1}}\right)^{5}+{\frac {1}{7}}\left({\frac {z-1}{z+1}}\right)^{7}+\cdots \right]\\&\approx {\frac {2}{T}}{\frac {z-1}{z+1}}\\&={\frac {2}{T}}{\frac {1-z^{-1}}{1+z^{-1}}}\end{aligned}}}

The bilinear transform essentially uses this first order approximation and substitutes into the continuous-time transfer function,

H

a

(
s
)

{\displaystyle H\_{a}(s)\ }

s
←

2
T

z
−
1

z
1

.

{\displaystyle s\leftarrow {\frac {2}{T}}{\frac {z-1}{z+1}}.}

That is

H

d

(
z
# )

H

a

(
s
)

# s

2
T

z
−
1

z
1

=

H

a

(

2
T

z
−
1

z
1

)

.

{\displaystyle H\_{d}(z)=H\_{a}(s){\bigg |}\_{s={\frac {2}{T}}{\frac {z-1}{z+1}}}=H\_{a}\left({\frac {2}{T}}{\frac {z-1}{z+1}}\right).\ }

To determine the frequency response of a continuous-time filter, the transfer function

H

a

(
s
)

{\displaystyle H\_{a}(s)}

 is evaluated at

# s
j

ω

a

{\displaystyle s=j\omega \_{a}}

 which is on the

j
ω

{\displaystyle j\omega }

 axis. Likewise, to determine the frequency response of a discrete-time filter, the transfer function

H

d

(
z
)

{\displaystyle H\_{d}(z)}

 is evaluated at

# z

e

j

ω

d

T

{\displaystyle z=e^{j\omega \_{d}T}}

 which is on the unit circle,

z

=
1

{\displaystyle |z|=1}

. The bilinear transform maps the

j
ω

{\displaystyle j\omega }

 axis of the *s*-plane (of which is the domain of

H

a

(
s
)

{\displaystyle H\_{a}(s)}

) to the unit circle of the *z*-plane,

z

=
1

{\displaystyle |z|=1}

 (which is the domain of

H

d

(
z
)

{\displaystyle H\_{d}(z)}

), but it is **not** the same mapping

# z

e

s
T

{\displaystyle z=e^{sT}}

 which also maps the

j
ω

{\displaystyle j\omega }

 axis to the unit circle. When the actual frequency of

ω

d

{\displaystyle \omega \_{d}}

 is input to the discrete-time filter designed by use of the bilinear transform, then it is desired to know at what frequency,

ω

a

{\displaystyle \omega \_{a}}

, for the continuous-time filter that this

ω

d

{\displaystyle \omega \_{d}}

 is mapped to.

H

d

(
z
# )

H

a

(

2
T

z
−
1

z
1

)

{\displaystyle H\_{d}(z)=H\_{a}\left({\frac {2}{T}}{\frac {z-1}{z+1}}\right)}

H

d

(

e

j

ω

d

T

)

{\displaystyle H\_{d}(e^{j\omega \_{d}T})}

=

H

a

(

2
T

e

j

ω

d

T

−
1

e

j

ω

d

T

1

)

{\displaystyle =H\_{a}\left({\frac {2}{T}}{\frac {e^{j\omega \_{d}T}-1}{e^{j\omega \_{d}T}+1}}\right)}

=

H

a

(

2
T

⋅

e

j

ω

d

T

/

2

(

e

j

ω

d

T

/

2

−

e

−
j

ω

d

T

/

2

)

e

j

ω

d

T

/

2

(

e

j

ω

d

T

/

2

e

−
j

ω

d

T

/

2

)

)

{\displaystyle =H\_{a}\left({\frac {2}{T}}\cdot {\frac {e^{j\omega \_{d}T/2}\left(e^{j\omega \_{d}T/2}-e^{-j\omega \_{d}T/2}\right)}{e^{j\omega \_{d}T/2}\left(e^{j\omega \_{d}T/2}+e^{-j\omega \_{d}T/2}\right)}}\right)}

=

H

a

(

2
T

⋅

(

e

j

ω

d

T

/

2

−

e

−
j

ω

d

T

/

2

)

(

e

j

ω

d

T

/

2

e

−
j

ω

d

T

/

2

)

)

{\displaystyle =H\_{a}\left({\frac {2}{T}}\cdot {\frac {\left(e^{j\omega \_{d}T/2}-e^{-j\omega \_{d}T/2}\right)}{\left(e^{j\omega \_{d}T/2}+e^{-j\omega \_{d}T/2}\right)}}\right)}

=

H

a

(

j

2
T

⋅

(

e

j

ω

d

T

/

2

−

e

−
j

ω

d

T

/

2

)

/

(
2
j
)

(

e

j

ω

d

T

/

2

e

−
j

ω

d

T

/

2

)

/

2

)

{\displaystyle =H\_{a}\left(j{\frac {2}{T}}\cdot {\frac {\left(e^{j\omega \_{d}T/2}-e^{-j\omega \_{d}T/2}\right)/(2j)}{\left(e^{j\omega \_{d}T/2}+e^{-j\omega \_{d}T/2}\right)/2}}\right)}

=

H

a

(

j

2
T

⋅

sin
⁡
(

ω

d

T

/

2
)

cos
⁡
(

ω

d

T

/

2
)

)

{\displaystyle =H\_{a}\left(j{\frac {2}{T}}\cdot {\frac {\sin(\omega \_{d}T/2)}{\cos(\omega \_{d}T/2)}}\right)}

=

H

a

(

j

2
T

⋅
tan
⁡

(

ω

d

T

/

2

)

)

{\displaystyle =H\_{a}\left(j{\frac {2}{T}}\cdot \tan \left(\omega \_{d}T/2\right)\right)}

This shows that every point on the unit circle in the discrete-time filter z-plane,

# z

e

j

ω

d

T

{\displaystyle z=e^{j\omega \_{d}T}}

 is mapped to a point on the

j
ω

{\displaystyle j\omega }

 axis on the continuous-time filter s-plane,

# s
j

ω

a

{\displaystyle s=j\omega \_{a}}

. That is, the discrete-time to continuous-time frequency mapping of the bilinear transform is

ω

a

=

2
T

tan
⁡

(

ω

d

T
2

)

{\displaystyle \omega \_{a}={\frac {2}{T}}\tan \left(\omega \_{d}{\frac {T}{2}}\right)}

and the inverse mapping is

ω

d

=

2
T

arctan
⁡

(

ω

a

T
2

)

.

{\displaystyle \omega \_{d}={\frac {2}{T}}\arctan \left(\omega \_{a}{\frac {T}{2}}\right).}

The discrete-time filter behaves at frequency

ω

d

{\displaystyle \omega \_{d}}

 the same way that the continuous-time filter behaves at frequency

(
2

/

T
)
tan
⁡
(

ω

d

T

/

2
)

{\displaystyle (2/T)\tan(\omega \_{d}T/2)}

. Specifically, the gain and phase shift that the discrete-time filter has at frequency

ω

d

{\displaystyle \omega \_{d}}

 is the same gain and phase shift that the continuous-time filter has at frequency

(
2

/

T
)
tan
⁡
(

ω

d

T

/

2
)

{\displaystyle (2/T)\tan(\omega \_{d}T/2)}

. This means that every feature, every "bump" that is visible in the frequency response of the continuous-time filter is also visible in the discrete-time filter, but at a different frequency. For low frequencies (that is, when

ω

d

≪
2

/

T

{\displaystyle \omega \_{d}\ll 2/T}

 or

ω

a

≪
2

/

T

{\displaystyle \omega \_{a}\ll 2/T}

), then the features are mapped to a *slightly* different frequency;

ω

d

≈

ω

a

{\displaystyle \omega \_{d}\approx \omega \_{a}}

.

One can see that the entire continuous frequency range

−
∞
<

ω

a

<
∞

{\displaystyle -\infty <\omega \_{a}<+\infty }

is mapped onto the fundamental frequency interval

−

π
T

<

ω

d

<

π
T

.

{\displaystyle -{\frac {\pi }{T}}<\omega \_{d}<+{\frac {\pi }{T}}.}

The continuous-time filter frequency

ω

a

=
0

{\displaystyle \omega \_{a}=0}

 corresponds to the discrete-time filter frequency

ω

d

=
0

{\displaystyle \omega \_{d}=0}

 and the continuous-time filter frequency

ω

a

=
±
∞

{\displaystyle \omega \_{a}=\pm \infty }

 correspond to the discrete-time filter frequency

ω

d

=
±
π

/

T
.

{\displaystyle \omega \_{d}=\pm \pi /T.}

One can also see that there is a nonlinear relationship between

ω

a

{\displaystyle \omega \_{a}\ }

 and

ω

d

.

{\displaystyle \omega \_{d}.}

 This effect of the bilinear transform is called **frequency warping**. The continuous-time filter can be designed to compensate for this frequency warping by setting

ω

a

=

2
T

tan
⁡

(

ω

d

T
2

)

{\displaystyle \omega \_{a}={\frac {2}{T}}\tan \left(\omega \_{d}{\frac {T}{2}}\right)}

 for every frequency specification that the designer has control over (such as corner frequency or center frequency). This is called **pre-warping** the filter design.

It is possible, however, to compensate for the frequency warping by pre-warping a frequency specification

ω

0

{\displaystyle \omega \_{0}}

 (usually a resonant frequency or the frequency of the most significant feature of the frequency response) of the continuous-time system. These pre-warped specifications may then be used in the bilinear transform to obtain the desired discrete-time system. When designing a digital filter as an approximation of a continuous time filter, the frequency response (both amplitude and phase) of the digital filter can be made to match the frequency response of the continuous filter at a specified frequency

ω

0

{\displaystyle \omega \_{0}}

, as well as matching at DC, if the following transform is substituted into the continuous filter transfer function. This is a modified version of Tustin's transform shown above.

s
←

ω

0

tan
⁡

(

ω

0

T

2

)

z
−
1

z
1

.

{\displaystyle s\leftarrow {\frac {\omega \_{0}}{\tan \left({\frac {\omega \_{0}T}{2}}\right)}}{\frac {z-1}{z+1}}.}

However, note that this transform becomes the original transform

s
←

2
T

z
−
1

z
1

{\displaystyle s\leftarrow {\frac {2}{T}}{\frac {z-1}{z+1}}}

as

ω

0

→
0

{\displaystyle \omega \_{0}\to 0}

.

The main advantage of the warping phenomenon is the absence of aliasing distortion of the frequency response characteristic, such as observed with Impulse invariance.

## Finite impulse response

In signal processing, a **finite impulse response** (**FIR**) **filter** is a filter whose impulse response (or response to any finite length input) is of *finite* duration, because it settles to zero in finite time. This is in contrast to infinite impulse response (IIR) filters, which may have internal feedback and may continue to respond indefinitely (usually decaying).

The impulse response (that is, the output in response to a Kronecker delta input) of an Nth-order discrete-time FIR filter lasts exactly *N* + 1 samples (from first nonzero element through last nonzero element) before it then settles to zero.

FIR filters can be discrete-time or continuous-time, and digital or analog.

For a causal discrete-time FIR filter of order *N*, each value of the output sequence is a weighted sum of the most recent input values**:**

y
[
n
]

=

b

0

x
[
n
]

b

1

x
[
n
−
1
]
⋯

b

N

x
[
n
−
N
]

=

∑

# i
0

N

b

i

⋅
x
[
n
−
i
]
,

{\displaystyle {\begin{aligned}y[n]&=b\_{0}x[n]+b\_{1}x[n-1]+\cdots +b\_{N}x[n-N]\\&=\sum \_{i=0}^{N}b\_{i}\cdot x[n-i],\end{aligned}}}

where**:**

* x
[
n
]

{\displaystyle \scriptstyle x[n]}

 is the input signal,
* y
[
n
]

{\displaystyle \scriptstyle y[n]}

 is the output signal,
* N

{\displaystyle \scriptstyle N}

 is the filter order; an

N

{\displaystyle \scriptstyle N}

th-order filter has

(
N

1
)

{\displaystyle \scriptstyle (N\,+\,1)}

 terms on the right-hand side
* b

i

{\displaystyle \scriptstyle b\_{i}}

 is the value of the impulse response at the *i'*th instant for

0

≤

i

≤

N

{\displaystyle \scriptstyle \ 0\ \leq \ i\ \leq \ N\ }

 of an

N

{\displaystyle \scriptstyle N}

th-order FIR filter. If the filter is a direct form FIR filter then

b

i

{\displaystyle \scriptstyle b\_{i}}

 is also a coefficient of the filter.

This computation is also known as discrete convolution.

The

x
[
n
−
i
]

{\displaystyle \scriptstyle x[n-i]}

 in these terms are commonly referred to as *taps*, based on the structure of a tapped delay line that in many implementations or block diagrams provides the delayed inputs to the multiplication operations. One may speak of a *5th order/6-tap filter*, for instance.

The impulse response of the filter as defined is nonzero over a finite duration. Including zeros, the impulse response is the infinite sequence**:**

h
[
n

# i
0

N

b

i

⋅
δ
[
n
−
i
# ]

{

b

n

0
≤
n
≤
N

0

otherwise

.

{\displaystyle h[n]=\sum \_{i=0}^{N}b\_{i}\cdot \delta [n-i]={\begin{cases}b\_{n}&\scriptstyle 0\leq n\leq N\\0&\scriptstyle {\text{otherwise}}.\end{cases}}}

If an FIR filter is non-causal, the range of nonzero values in its impulse response can start before *n* = 0, with the defining formula appropriately generalized.

An FIR filter has a number of useful properties which sometimes make it preferable to an infinite impulse response (IIR) filter. FIR filters:

* Require no feedback. This means that any rounding errors are not compounded by summed iterations. The same relative error occurs in each calculation. This also makes implementation simpler.
* Are inherently stable, since the output is a sum of a finite number of finite multiples of the input values, so can be no greater than

∑

b

i

{\displaystyle \scriptstyle \sum |b\_{i}|}

 times the largest value appearing in the input.
* Can easily be designed to be linear phase by making the coefficient sequence symmetric. This property is sometimes desired for phase-sensitive applications, for example data communications, seismology, crossover filters, and mastering.

The main disadvantage of FIR filters is that considerably more computation power in a general purpose processor is required compared to an IIR filter with similar sharpness or selectivity, especially when low frequency (relative to the sample rate) cutoffs are needed. However, many digital signal processors provide specialized hardware features to make FIR filters approximately as efficient as IIR for many applications.

## Infinite impulse response

Although almost all analog electronic filters are IIR, digital filters may be either IIR or FIR. The presence of feedback in the topology of a discrete-time filter (such as the block diagram shown above) generally creates an IIR response. The z domain transfer function of an IIR filter contains a non-trivial denominator, describing those feedback terms. The transfer function of an FIR filter, on the other hand, has only a numerator as expressed in the general form derived below. All of the

a

i

{\displaystyle a\_{i}}

 coefficients with

i
>
0

{\displaystyle i>0}

 (feedback terms) are zero and the filter has no finite poles.

The transfer functions pertaining to IIR analog electronic filters have been extensively studied and optimized for their amplitude and phase characteristics. These continuous-time filter functions are described in the Laplace domain. Desired solutions can be transferred to the case of discrete-time filters whose transfer functions are expressed in the z domain, through the use of certain mathematical techniques such as the bilinear transform, impulse invariance, or pole–zero matching method. Thus digital IIR filters can be based on well-known solutions for analog filters such as the Chebyshev filter, Butterworth filter, and elliptic filter, inheriting the characteristics of those solutions.

## Discrete convolution

For complex-valued functions *f*, *g* defined on the set **Z** of integers, the *discrete convolution* of f and g is given by:

(
f
∗
g
)
[
n

# m
−
∞

∞

f
[
m
]
g
[
n
−
m
]
,

{\displaystyle (f\*g)[n]=\sum \_{m=-\infty }^{\infty }f[m]g[n-m],}

or equivalently (see commutativity) by:

(
f
∗
g
)
[
n

# m
−
∞

∞

f
[
n
−
m
]
g
[
m
]
.

{\displaystyle (f\*g)[n]=\sum \_{m=-\infty }^{\infty }f[n-m]g[m].}

The convolution of two finite sequences is defined by extending the sequences to finitely supported functions on the set of integers. When the sequences are the coefficients of two polynomials, then the coefficients of the ordinary product of the two polynomials are the convolution of the original two sequences. This is known as the Cauchy product of the coefficients of the sequences.

Thus when g has finite support in the set

{
−
M
,
−
M
1
,
…
,
M
−
1
,
M
}

{\displaystyle \{-M,-M+1,\dots ,M-1,M\}}

 (representing, for instance, a finite impulse response), a finite summation may be used:

(
f
∗
g
)
[
n

# m
−
M

M

f
[
n
−
m
]
g
[
m
]
.

{\displaystyle (f\*g)[n]=\sum \_{m=-M}^{M}f[n-m]g[m].}

When a function *g**N* is periodic, with period *N*, then for functions, f, such that *f*∗*g**N* exists, the convolution is also periodic and identical to:

(
f
∗

g

N

)
[
n
]
≡

∑

# m
0

N
−
1

(

∑

# k
−
∞

∞

f

[
m
k
N
]

)

g

N

[
n
−
m
]
.

{\displaystyle (f\*g\_{N})[n]\equiv \sum \_{m=0}^{N-1}\left(\sum \_{k=-\infty }^{\infty }{f}[m+kN]\right)g\_{N}[n-m].}

The summation on k is called a periodic summation of the function f.

If *g**N* is a periodic summation of another function, g, then *f*∗*g**N* is known as a circular convolution of f and g.

When the non-zero durations of both f and g are limited to the interval [0, *N*−1],  *f*∗*g**N* reduces to these common forms:

(
f
∗

g

N

)
[
n
]

=

∑

# m
0

N
−
1

f
[
m
]

g

N

[
n
−
m
]

=

∑

# m
0

n

f
[
m
]
g
[
n
−
m
]

∑

# m
n
1

N
−
1

f
[
m
]
g
[
N
n
−
m
]

=

∑

# m
0

N
−
1

f
[
m
]
g
[
(
n
−
m

)

mod

N

]
≜
(
f

∗

N

g
)
[
n
]

{\displaystyle {\begin{aligned}(f\*g\_{N})[n]&=\sum \_{m=0}^{N-1}f[m]g\_{N}[n-m]\\&=\sum \_{m=0}^{n}f[m]g[n-m]+\sum \_{m=n+1}^{N-1}f[m]g[N+n-m]\\&=\sum \_{m=0}^{N-1}f[m]g[(n-m)\_{\bmod {N}}]\triangleq (f\*\_{\_{N}}g)[n]\end{aligned}}}

The notation (*f* ∗*N* *g*) for *cyclic convolution* denotes convolution over the cyclic group of integers modulo *N*.

Circular convolution arises most often in the context of fast convolution with a fast Fourier transform (FFT) algorithm.

In many situations, discrete convolutions can be converted to circular convolutions so that fast transforms with a convolution property can be used to implement the computation. For example, convolution of digit sequences is the kernel operation in multiplication of multi-digit numbers, which can therefore be efficiently implemented with transform techniques (Knuth 1997, §4.3.3.C; von zur Gathen & Gerhard 2003, §8.2).

**Eq.1** requires N arithmetic operations per output value and *N*2 operations for N outputs. That can be significantly reduced with any of several fast algorithms. Digital signal processing and other applications typically use fast convolution algorithms to reduce the cost of the convolution to O(N log N) complexity.

The most common fast convolution algorithms use fast Fourier transform (FFT) algorithms via the circular convolution theorem. Specifically, the circular convolution of two finite-length sequences is found by taking an FFT of each sequence, multiplying pointwise, and then performing an inverse FFT. Convolutions of the type defined above are then efficiently implemented using that technique in conjunction with zero-extension and/or discarding portions of the output. Other fast convolution algorithms, such as the Schönhage–Strassen algorithm or the Mersenne transform, use fast Fourier transforms in other rings.

If one sequence is much longer than the other, zero-extension of the shorter sequence and fast circular convolution is not the most computationally efficient method available. Instead, decomposing the longer sequence into blocks and convolving each block allows for faster algorithms such as the Overlap–save method and Overlap–add method. A hybrid convolution method that combines block and FIR algorithms allows for a zero input-output latency that is useful for real-time convolution computations.