This lecture connects time-domain equations with frequency-domain tools. You will use the Laplace transform to obtain transfer functions, poles and stability information. You will then see how the CTFT, CTFS, DTFT and DTFS describe different signal types, and how the DFT and FFT make frequency analysis practical on a computer.
Sections 2.1–2.5 develop the Laplace toolkit: convergence, inversion, poles and stability. Sections 2.6–2.10 connect Laplace analysis to Fourier analysis and filtering. Sections 2.11–2.14 then introduce the four Fourier representations and finish with the DFT and FFT.
Keep the frequency symbols separate. We use \(\Omega\) for continuous-time frequency in radians per second and \(\omega\) for discrete-time frequency in radians per sample. Therefore, \(X(\Omega)\) and \(H(j\Omega)\) describe continuous-time signals, while \(X(e^{j\omega})\) and \(H(e^{j\omega})\) describe sequences. Only one interval of length \(2\pi\), usually \((-\pi,\pi]\), is needed in discrete time. Lecture 3 connects the variables through \(\omega=\Omega T=\Omega/f_s\).
Circuits, mechanical systems and control loops are often modelled by a linear constant-coefficient differential equation (LCCDE):
Here, \(N\) is the system order and the coefficients \(\{a_k\}\) and \(\{b_m\}\) are constant. The equation and the impulse response \(h(t)\) are two equivalent descriptions of the same LTI system. The total output contains two parts:
The zero-input response is caused by stored energy or initial conditions when \(x(t)=0\). The zero-state response is caused by the input when all initial conditions are zero. For an LTI system, the zero-state response is the convolution of \(x(t)\) with \(h(t)\).
The Laplace transform (LT) converts a causal time-domain function \(f(t)\) into a function of a complex variable \(s=\sigma+j\Omega\):
In the kernel \(e^{-st}=e^{-\sigma t}e^{-j\Omega t}\), the real part \(\sigma\) controls exponential decay or growth (convergence) while \(\Omega\) controls oscillation. In practice the inverse Bromwich integral is never evaluated directly: we use tables of Laplace pairs together with partial fraction expansion (Section 2.3).
Because in the time domain, cascading systems means convolving impulse responses — a messy integral every time. Transform domains trade that integral for ordinary multiplication of algebraic functions.
Case study. An RC low-pass filter obeys \(RC\,y'(t)+y(t)=x(t)\). Solved directly, a new differential equation must be re-solved for every input \(x(t)\). Laplace-transform both sides instead and the derivative becomes multiplication by \(s\): \((RCs+1)Y(s)=X(s)\), so \(H(s)=Y(s)/X(s)=1/(1+RCs)\) — one algebraic expression that describes the filter for every input at once. That is the whole motivation for this lecture: turn calculus into algebra, then read the system's behaviour straight off the resulting expression.
The reason the Laplace transform is worth the extra abstraction is that it turns convolution into ordinary multiplication. For causal \(x,h\), with \(Y(s)=\mathcal{L}\{x(t)*h(t)\}\):
Step 1. Write out the double integral, noting the integration region is the triangle \(0\le\tau\le t<\infty\):
Step 2. Swap the order of integration (Fubini's theorem), so \(\tau\) runs from \(0\) to \(\infty\) and, for each \(\tau\), \(t\) runs from \(\tau\) to \(\infty\):
Step 3. Substitute \(\alpha=t-\tau\) (so \(t=\alpha+\tau\), \(dt=d\alpha\)), which decouples the two integrals:
Step 4. Each factor is exactly a Laplace transform:
Figure 2.1.a shows this result as a commutative diagram: it does not matter whether you convolve in the time domain then transform, or transform first and multiply, the two paths agree.
Apply the Laplace transform to the LCCDE, using the differentiation property \(\mathcal{L}\{d^rf/dt^r\} = s^rF(s) - s^{r-1}f(0^-) - \cdots - f^{(r-1)}(0^-)\). Assuming zero initial conditions (\(x^{(r)}(0^-)=y^{(r)}(0^-)=0\) for all \(r\), the standard assumption for system analysis) makes every initial-condition term vanish, converting the differential equation into a purely algebraic one:
Factoring the numerator and denominator into roots exposes the zeros \(z_k\) (where \(H(s)=0\)) and poles \(p_\ell\) (where \(H(s)\to\infty\)); \(K\) is the overall gain. Zeros shape spectral notches; poles, as Section 2.4 shows, govern stability. A pole–zero plot (poles marked \(\times\), zeros marked \(\circ\), in the complex \(s\)-plane) is the single most useful sketch of a system, and is exactly the picture Lecture 5 draws over and over while designing filters.
MATLAB stores the numerator and denominator of Eq. (2.5) as two coefficient vectors. The tf() command turns them into a transfer-function model, and pole() and zero() find the roots for us. This is useful for checking hand calculations and for seeing stability directly on a pole–zero map.
Goal: build \(H(s)\) from the LCCDE's coefficients and read its poles/zeros straight off the object, instead of factoring by hand.
A Laplace transform is more than an algebraic expression in \(s\). Its defining integral may converge for some values of \(s\) and diverge for others. The set of values for which it converges is the region of convergence (ROC). The pair “expression plus ROC” is needed to identify the time-domain signal uniquely.
The bilateral definition includes all time and therefore makes no assumption about what happened before \(t=0\):
Because \(|e^{-st}|=e^{-\sigma t}\), convergence depends on \(\sigma=\operatorname{Re}\{s\}\), not on \(\Omega\). An ROC therefore appears as a vertical half-plane or strip in the \(s\)-plane. Its boundaries pass through poles, which are never included in the ROC.
Transform the right-sided exponential \(f(t)=e^{-at}u(t)\). The integral runs from \(0\) to \(\infty\) and converges only when the integrand decays, i.e. when \(\sigma+a>0\):
Now transform the left-sided signal \(g(t)=-e^{-at}u(-t)\), which is zero for \(t>0\). The integral runs from \(-\infty\) to \(0\), and converges under the opposite condition:
Both signals produce the same expression, \(1/(s+a)\). The ROC tells us which signal is meant. An ROC to the right of the pole gives the right-sided, causal signal. An ROC to the left gives the left-sided, anti-causal signal. Lecture 4 uses the same idea for the \(z\)-transform.
Three ROC rules. First, an ROC never contains a pole. Second, a right-sided signal has an ROC to the right of its rightmost pole; a left-sided signal has an ROC to the left of its leftmost pole; and a two-sided signal has a strip between poles. Third, an absolutely integrable finite-duration signal has an ROC covering the whole \(s\)-plane.
Many engineering problems begin at \(t=0\) and ask for the response afterwards. The unilateral Laplace transform is designed for this situation:
The lower limit \(0^-\) includes an impulse at the origin, so \(\mathcal{L}\{\delta(t)\}=1\). A unilateral transform represents a right-sided signal, so its ROC is automatically to the right of the rightmost pole and is often omitted. Use the bilateral transform when behaviour before \(t=0\) matters or when the signal is two-sided.
The main advantage of the unilateral form is that it includes initial conditions directly. Its differentiation rules allow differential equations with a nonzero starting state to be solved algebraically:
The initial and final values of a signal can sometimes be found directly from \(F(s)\), without calculating the full inverse transform:
For a strictly proper rational \(F(s)\), the initial value theorem is straightforward to use. The final value theorem requires an extra check: every pole of \(sF(s)\) must lie strictly in the left-half plane. Otherwise, the signal grows or continues to oscillate and has no final value. Always check the poles before using the second limit.
Most transfer functions are ratios of polynomials in \(s\). Direct inversion may be difficult, so we first split the expression into simpler fractions. Each simple term then matches a standard Laplace-transform pair.
Distinct real poles. If \(F(s)=P(s)/Q(s)\) has \(N\) distinct poles \(p_1,\ldots,p_N\),
Each pole \(p_k\) contributes one exponential term \(e^{p_kt}\): this is the key idea behind the whole method. Repeated poles use the table pair below, one term per power of the repeated factor:
A complex-conjugate pole pair \(p_{1,2}=-\alpha\pm j\beta\) produces an oscillatory response. This occurs frequently in circuits, mechanical systems and control loops. A corresponding second-order term has the form \(H(s)=\dfrac{As+B}{(s+\alpha)^2+\beta^2}\). Two standard transform pairs are enough to invert it:
Step 1. Rewrite the numerator as a combination of \((s+\alpha)\) and \(\beta\): \(As+B = A(s+\alpha) + (B-A\alpha)\); writing \(C=(B-A\alpha)/\beta\) gives \(As+B = A(s+\alpha)+C\beta\), so
Step 2. Apply the two standard pairs term by term:
where the amplitude–phase form uses \(D=\sqrt{A^2+C^2}\) and \(\tan\psi = A/C\) (both forms decay at the same rate \(e^{-\alpha t}\), only the bookkeeping differs).
Eq. (2.15) is the decaying oscillation \(h(t)\); its two exponential envelopes \(\pm\sqrt{A^2+C^2}\,e^{-\alpha t}\) pinch it at every peak, since \(\alpha\) alone sets the decay rate regardless of \(\beta\).
Goal: plot the actual decaying oscillation \(h(t)\) against its \(\pm e^{-\alpha t}\) envelope, to see the decay rate is set by \(\alpha\) alone.
Stable if \(h(t)\to0\) (or a finite value) as \(t\to\infty\).
Every bounded input, \(|x(t)|\le M_x<\infty\), gives a bounded output, \(|y(t)|\le M_y<\infty\).
Bounded initial conditions produce outputs that decay to zero as \(t\to\infty\).
Simple poles sit on the \(j\Omega\)-axis, none to its right: \(h(t)\) neither decays nor grows. BIBO still fails — a matching input resonates it unboundedly.
All three reduce to one geometric test on the pole–zero plot: for a causal system, every pole must lie in the open left-half \(s\)-plane,
A pole on or to the right of the \(j\Omega\)-axis means \(h(t)\) does not decay, and BIBO stability fails.
For the important case \(p_{1,2}=-\alpha\pm j\beta\), the impulse response has the form \(h(t)=D e^{-\alpha t}\sin(\beta t+\phi)u(t)\). The two parts of each pole have different roles: \(\beta\) sets the oscillation frequency, while \(-\alpha\) determines whether the envelope decays, remains constant or grows.
Sets the exponent of \(e^{-\alpha t}\): how fast the response dies, or whether it dies at all. Distance from the \(j\Omega\)-axis is the decay rate.
Sets the frequency of \(\sin(\beta t+\phi)\): how fast it rings. Height above the real axis is the oscillation frequency. It has no say in stability.
So stability is decided by the sign of \(\alpha\) alone, and there are exactly three outcomes:
Marginal stability is a boundary case, not a comfortably stable one. Poles on the \(j\Omega\)-axis produce oscillations that do not decay. A bounded input at the same frequency can make the response grow through resonance, so BIBO stability fails. An ideal lossless \(LC\) circuit would behave this way. In a real \(RLC\) circuit, resistance moves the poles into the left-half plane and gives the resonance a finite height.
MATLAB can apply the stability test in Eq. (2.16) directly: find the poles and inspect the signs of their real parts. The pzmap() command then makes the comparison visual. Poles in the left half-plane produce decaying modes; any pole in the right half-plane produces a growing mode.
Goal: verify the RHP/LHP stability test numerically on both a stable and an unstable system, and reproduce Figure 2.3 from real pole-zero maps.
A pole-zero plot collects several important properties in one picture. It shows natural modes, stability and the main features of the frequency response. For this reason, it is often the first plot used to inspect a system and the final plot checked after a design.
A rational transfer function is fixed, up to a gain, by where its poles and zeros sit:
At a chosen value of \(s\), each factor represents the distance from a pole or zero to that point. On the \(j\Omega\)-axis, the magnitude tends to increase near a pole and decrease near a zero. This geometric rule helps predict resonances and attenuation directly from the plot and becomes a central design idea in Lecture 5.
| Question | What to look at | Answer |
|---|---|---|
| Stable? | Does the ROC contain the \(j\Omega\)-axis? | Yes ⇒ BIBO stable. For a causal system this reduces to: all poles strictly in the left-half plane. |
| Causal? | Is the ROC right of the rightmost pole? | Yes ⇒ causal. The poles alone cannot tell you; the ROC can. |
| Both at once? | Rightmost pole. | Possible only if every pole is in the left-half plane. |
| Invertible by a stable causal system? | Zeros. | Only if every zero is also in the left-half plane — a minimum-phase system. |
| How fast does it settle? | Distance of the dominant pole from the \(j\Omega\)-axis. | Time constant \(1/|\sigma|\); the pole nearest the axis dominates. |
Inverting a system means undoing it: finding \(H_{\mathrm{inv}}(s)\) such that the cascade is the identity. Algebraically this is trivial —
The zeros of \(H\) become the poles of the inverse \(H_{\mathrm{inv}}\). Therefore, a right-half-plane zero in the original system becomes an unstable pole in its causal inverse. A stable causal system whose poles and zeros are all in the left-half plane is called minimum phase. Such a system can have a stable causal inverse.
The name comes from a second fact: among all systems sharing one magnitude response, the minimum-phase one has the least phase lag and the fastest energy build-up. Any other is that system cascaded with an all-pass factor,
which changes the phase while leaving the magnitude untouched. This is why a magnitude specification alone never pins down a filter, and why Lecture 5's design methods must say something about phase separately.
Recall \(s=\sigma+j\Omega\), so the Laplace kernel splits into a damping factor and an oscillation: \(e^{-st}=e^{-\sigma t}e^{-j\Omega t}\). Setting \(\sigma=0\) strips away the damping and leaves a purely frequency-domain view:
This is the Continuous-Time Fourier Transform (CTFT). It exists when the ROC of \(X(s)\) includes the \(j\Omega\)-axis. For a causal stable LTI system, all poles are in the left-half plane, so this condition is satisfied. Its frequency response is therefore obtained by evaluating the transfer function at \(s=j\Omega\).
The transform runs backwards through the same axis, giving the inverse CTFT, and, for a real-valued signal, the conjugate symmetry already met in Lecture 1 (Eq. 1.7):
The analysis integral measures the amplitude and phase associated with each frequency. The synthesis integral adds those frequency components to reconstruct the signal. Because the transform is reversible, we can specify and design a system through its frequency response \(H(j\Omega)\), then return to the time domain when needed.
Every transform in this module probes a signal with an exponential and asks “how much of this is in there?” They differ only in how much decay the probe is allowed to carry:
Setting \(\sigma=0\) is therefore a trade: you give up the ability to analyse unstable systems, and in exchange you get a picture with a direct physical meaning, a spectrum.
Removing the Laplace damping factor makes convergence more restrictive. In particular, the ordinary CTFT integral does not converge for a nonzero periodic signal:
This matches the distinction from Lecture 1. The ordinary CTFT is naturally suited to energy signals, while a nonzero periodic signal is a power signal. Periodic signals therefore need the Fourier series description introduced in Section 2.11. Discrete-time signals require the corresponding DTFT and DTFS forms developed later.
To obtain the frequency response, Eq. (2.19) evaluates the transfer function on the imaginary axis by setting \(s=j\Omega\). MATLAB's freqs() performs this calculation from the coefficient vectors. We compare its output with the closed-form expression from Example 2.10; the two should agree apart from numerical rounding.
Goal: evaluate \(H(s)=1/(s+a)\) at \(s=j\Omega\) via freqs() and confirm it matches Example 2.10's closed-form CTFT, including the \(-3\,\text{dB}\) point at \(\Omega=a\).
freqs() lie on the closed-form magnitude and phase curves, so evaluating \(H(s)\) at \(s=j\Omega\) gives the same frequency response as the direct CTFT calculation. At \(\Omega=a\), the magnitude has fallen to \(1/\sqrt{2}\) of its DC value, or \(-3\,\text{dB}\), and the phase is \(-45^\circ\). These two markers provide an easy numerical check of the result.The substitution \(s=j\Omega\) is valid only when the \(j\Omega\)-axis lies inside the ROC. If it does not, the Fourier integral diverges. Two common sufficient conditions help us decide when a CTFT exists.
The first is absolute integrability, which guarantees the integral converges for every \(\Omega\):
Together with the requirement that a finite interval contains only finitely many extrema and finite jumps, these form the Dirichlet conditions. At a continuous point, the inverse transform returns \(x(t)\). At a jump, it returns the midpoint of the two limiting values. Finite-energy signals may also converge in the mean-square sense, where the total error energy tends to zero even if individual points do not match exactly.
The sinc function decays as \(1/t\). It is square-integrable but not absolutely integrable, so its transform is interpreted through mean-square convergence. This issue appears again in the ideal brick-wall filter. Pure sinusoids and steps do not satisfy either ordinary condition; their Fourier transforms are represented using impulses in frequency. These impulse-valued transforms are useful, but they are generalized functions rather than ordinary curves.
Many sets of functions could be used to build a signal. Fourier analysis uses sinusoids, written compactly as complex exponentials, because they interact with LTI systems in an exceptionally simple way.
Convolution adds scaled and delayed copies of the input. Delaying a sinusoid changes its phase but not its frequency. Adding several sinusoids at the same frequency produces another sinusoid at that frequency. Therefore, an LTI system can change a sinusoid's amplitude and phase, but not its frequency:
For example, a \(1\,\text{kHz}\) input to an LTI system produces a \(1\,\text{kHz}\) output. The output may be weaker, stronger or phase shifted, but it cannot become a different frequency or a square wave. A nonlinear system can create new frequencies; that behaviour is harmonic or intermodulation distortion.
Closure alone would be useless if the components interfered with each other's bookkeeping. They do not: over a common period, distinct harmonics integrate against each other to exactly zero.
Different complex exponentials are orthogonal, so each Fourier coefficient can be measured independently. Multiply the signal by the conjugate of the required basis function, then integrate or sum. The formulas for \(X(\Omega)\), \(X_k\), \(X(e^{j\omega})\) and \(X[k]\) all follow this same pattern.
Sines and cosines work, but they are clumsy: a sinusoid carries an amplitude and a phase, and keeping them in separate columns makes every calculation twice as long. Euler's identity collapses the pair.
Three concrete payoffs follow, and each one shows up somewhere later in the module.
The three properties above converge on one statement. Push \(x[n]=e^{j\omega n}\) through the convolution sum of Eq. (1.14) and watch the exponential factor out:
The output is the input multiplied by a constant. In the language of linear algebra, complex exponentials are the eigenfunctions of every LTI/LSI system, and the eigenvalue is the frequency response, exactly as Lecture 1's Problem 1.7 proved for \(z^n\):
Now add linearity. If the input can be written as a sum of exponentials, the system acts on each one separately and never mixes them:
Eq. (2.26)–(2.27) are a strong claim: push a complex exponential through any LTI system and only a single complex number changes. That is easy to take on faith and easy to check.
Goal: filter a complex exponential through a real IIR system and verify the steady-state output is exactly the input multiplied by \(H(e^{j\omega_0})\).
In the time domain, an LTI output requires convolution. In the exponential basis, the same operation becomes multiplication at each frequency. The remaining task is to express the signal as a sum or integral of complex exponentials. The appropriate Fourier representation depends on whether the signal is continuous or discrete and periodic or aperiodic.
A sinusoid in gives a sinusoid out, at the same frequency, through any LTI system. No other family survives intact.
Distinct harmonics cancel against one another, so every coefficient is read off by one independent integral, and the answer is unique.
\(Ae^{j\varphi}\) holds amplitude and phase together; multiplying by it applies gain and delay in a single stroke. Calculus becomes \(\times j\Omega\).
\(e^{j\Omega t}\mapsto H(j\Omega)e^{j\Omega t}\). Convolution collapses to one complex multiply per frequency. This is the payoff the other three buy.
The Fourier formulas are not separate ideas to memorize. They all decompose a signal into complex exponentials. The correct formula depends on two questions: Is time continuous or discrete? Is the signal periodic or aperiodic?
Lecture 1 already supplied both axes, and neither has more than two values:
Continuous \(x(t)\) or discrete \(x[n]\). Physics gives you the first; an ADC gives you the second (Lecture 3).
Aperiodic (an energy signal, \(E<\infty\)) or periodic (a power signal, \(E=\infty\), \(P<\infty\)). Eq. (1.3)–(1.5).
These two choices create four signal classes and four corresponding Fourier representations. The DFT is the finite, computational form associated with periodic discrete-time analysis. The FFT is not another transform; it is an efficient algorithm for calculating the DFT.
You do not have to memorise what each spectrum looks like. Two reciprocity rules produce all four:
Apply them in both directions and the table writes itself. In particular, reading rule 1 backwards: discrete in time \(\Rightarrow\) periodic in frequency. That single line is why every DTFT in this module repeats every \(2\pi\), and it is aliasing (Lecture 3) seen from the frequency side.
The fourth class is especially useful for computation. One period contains a finite number of time samples and the spectrum contains the same finite number of coefficients. Both lists fit in memory. This finite representation is the DFT.
Continuous-time analysis: use the CTFT for aperiodic signals and impulse responses, and the CTFS for periodic signals. Analog filter specifications are written using \(H(j\Omega)\).
Digital filter theory: use the DTFT. FIR and IIR filters are specified through \(H(e^{j\omega})\), while the \(z\)-transform extends the same idea away from the unit circle.
Numerical computation: use the DFT, normally calculated by an FFT. MATLAB spectrum plots, audio analysers and OFDM receivers all use this finite representation.
The first case is an aperiodic continuous-time signal, described by the CTFT in Eq. (2.19). In practice, most transforms are found from a short table of standard pairs together with properties such as scaling, shifting and convolution.
Constant signals and pure sinusoids have infinite energy, so their CTFTs are represented by impulses in frequency. Also notice the duality between a rectangular pulse and a sinc: a rectangle in one domain corresponds to a sinc-shaped function in the other. This explains why rectangular windows and ideal rectangular filters produce closely related side-lobe behaviour.
This is the property the whole module is built on, and it is Eq. (2.4) again with \(s=j\Omega\):
A filter scales each frequency component by \(H(j\Omega)\). For a low-pass filter with \(f_c=150\,\text{Hz}\), the 50 Hz component of a two-tone input remains large, while the 300 Hz component is multiplied by a much smaller value. It is attenuated rather than mathematically erased. Filter design chooses \(H\) so that these frequency-dependent scale factors meet a specification.
Run the property the other way and it stops being a convenience and becomes a warning:
A measurement always has finite duration, which means the true signal has been multiplied by a window. Multiplication in time becomes convolution in frequency, so each ideal spectral line is spread by the window spectrum. This spreading is called spectral leakage; it is a mathematical consequence of finite observation, not a software error.
A rectangular window has a narrow main lobe, which helps separate nearby tones, but high side lobes cause strong leakage. Tapered windows such as Hann, Hamming and Blackman reduce the side lobes but widen the main lobe. Window choice is therefore a trade-off between frequency resolution and leakage.
The next script makes Eq. (2.29) and Eq. (2.30) visible in one sitting. Its first half low-pass-filters a two-tone signal purely by multiplying spectra; its second half shows why the window you truncate with decides how badly a clean tone smears.
Goal: show a filter removing a tone purely by spectral multiplication, then show how the truncation window you pick trades main-lobe width against leakage.
A time delay leaves the magnitude unchanged and adds a phase term \(-\Omega t_0\), which is linear in frequency. Conversely, a filter with linear phase delays every frequency component by the same time, so the waveform shape is preserved. Nonlinear phase gives different delays to different components and can distort pulses even when the magnitude response is acceptable.
One last property makes the spectrum quantitative rather than decorative. Taking inner products through the convolution theorem gives
Parseval's relation states that the signal energy calculated in time equals the energy calculated in frequency. The transform changes the representation, not the total energy. This allows filter performance to be measured by integrating \(|X(\Omega)|^2\) over passbands or stopbands.
Because convolution becomes multiplication in frequency, we can design a filter by choosing the shape of \(H(j\Omega)\). Most frequency-selective filters belong to one of four groups: lowpass, highpass, bandpass or bandstop.
The ideal lowpass filter is defined by nothing more than an indicator function on frequency, with cutoff \(\Omega_c\):
This ideal response is a useful design target, but it cannot be implemented exactly. Taking its inverse Fourier transform gives
The result is a sinc impulse response that exists for all time, including \(t<0\). A real-time filter cannot respond before the input arrives, so the ideal filter is non-causal. It is also infinitely long and decays slowly as \(1/t\). Cutting it to a finite length makes implementation possible, but introduces ripple in the frequency response. Lecture 7 shows how window functions control this trade-off.
Zero transition width, no ripple, infinite stopband attenuation, zero or linear phase. Non-causal, infinite in duration, unrealisable.
Finite transition band \(\Omega_p\to\Omega_s\), passband ripple \(\delta_p\), stopband attenuation \(A_s\), finite order. Every one of these is a number you trade against the others.
A practical filter is therefore specified by four quantities: the passband edge, the stopband edge, the allowed passband ripple and the required stopband attenuation. Lectures 5 and 7 show how to meet these requirements with the lowest reasonable filter order. The brick-wall response remains a reference, not a realizable design.
The ordinary CTFT integral does not converge for a periodic signal. Instead, we describe the signal using a Fourier series. If \(x(t)\) repeats every \(T_0\), its frequency components occur only at integer multiples of the fundamental frequency \(\Omega_0=2\pi/T_0\). These frequencies \(k\Omega_0\) are called harmonics, so a sum is sufficient; we do not need an integral over every possible frequency.
The analysis formula isolates one harmonic at a time. Multiplying by \(e^{-jk\Omega_0t}\) and integrating over one period makes all other harmonics cancel because they are orthogonal. The complex coefficient \(X_k\) stores both the amplitude and phase of harmonic \(k\). For a real signal, \(X_{-k}=X_k^{*}\), so the magnitude spectrum is even and the phase spectrum is odd.
Parseval reappears too, now measuring power instead of energy, exactly as the energy/power split of Lecture 1 demands:
The average power of a periodic signal is the sum of the powers of its harmonics; a sinusoid of amplitude \(A\) has \(P=A^2/2\), split evenly between its two lines at \(\pm\Omega_0\).
The CTFS and CTFT are complementary descriptions, not competing methods. Taking the CTFT of the Fourier-series expression term by term, and using \(e^{jk\Omega_0t}\leftrightarrow 2\pi\delta(\Omega-k\Omega_0)\), gives
In the generalized sense, the CTFT of a periodic signal is an impulse train. One impulse appears at each harmonic \(k\Omega_0\), weighted by the same coefficient \(X_k\) used in the Fourier series. The two descriptions therefore contain the same information. For calculations, it is usually simpler to list the coefficients \(X_k\) than to write the full impulse spectrum.
Represents a periodic signal as a sum of harmonics. Use the coefficients \(X_k\) to identify how much of each harmonic is present or to reconstruct the repeating waveform.
Normally gives a continuous spectrum for an aperiodic energy signal. For a periodic signal, it gives the impulse train in Eq. (2.37), carrying the same information as the CTFS coefficients.
Take the standard test case: amplitude \(A\), pulse width \(\tau\), period \(T_0\). Only the pulse contributes to the integral, so
The middle step is just Euler's formula (2.25) read backwards, which is the third time in this lecture that a messy integral has been rescued by turning exponentials into a sine.
Example 2.13 found the Fourier-series coefficients by integration. Here we sample one period of the same square wave and calculate an FFT. Dividing the FFT by the number of samples gives coefficients that can be compared directly with the analytic values.
Goal: build Example 2.13's square wave, take its FFT, and check the bins against the analytic \(X_k\) of Eq. (2.38) and the power split of Eq. (2.36).
This relationship will return in Section 2.14 with time and frequency exchanged. Making a signal periodic in time produces discrete frequency lines. In the opposite direction, sampling a spectrum at discrete frequencies makes the reconstructed time sequence periodic. This is the periodicity assumption built into the DFT.
Adding more harmonics gives a better square-wave approximation overall, because the total error energy decreases as \(N\) increases. Near each discontinuity, however, a visible overshoot remains.
Each partial sum overshoots the jump, and the overshoot does not shrink. Increasing \(N\) makes the ripple narrower and pushes it closer to the edge, but its height converges to a fixed fraction of the jump:
The limiting overshoot is approximately \(8.95\%\) of the jump height \(\Delta\) on each side. This is the Gibbs phenomenon. Increasing \(N\) makes the ripple narrower but does not remove its peak height. The ripple energy still tends to zero because it is concentrated into a smaller region.
Why this matters for filter design. Abruptly truncating Fourier coefficients is equivalent to applying a rectangular window, whose sinc-shaped side lobes cause ringing near a jump. The same effect appears when an ideal filter impulse response is cut to a finite length. Lecture 7 uses smoother windows, such as Hamming or Blackman, to reduce the side lobes and therefore reduce the ripple.
So far, the signals have been continuous in time. From Lecture 3 onward, most signals are stored as sample arrays, so we need frequency-domain tools for sequences. For an aperiodic sequence \(x[n]\), replace the CTFT integral with a sum and use the discrete-time complex exponential \(e^{-j\omega n}\):
This is the Discrete-Time Fourier Transform (DTFT). Like the CTFT, it maps an aperiodic signal to a continuous spectrum. The notation \(X(e^{j\omega})\) reminds us that discrete-time frequency has an important new property: it is periodic.
Rule 1 of Section 2.8, read backwards, predicted it: discrete in time \(\Rightarrow\) periodic in frequency. The proof takes one line, and it needs only that \(n\) is an integer:
Discrete-time frequency repeats every \(2\pi\). For integer \(n\), \(\cos(\omega n)\) and \(\cos((\omega+2\pi)n)\) produce exactly the same samples. We therefore need only one frequency interval, usually \((-\pi,\pi]\). Frequencies outside it fold back into this interval. In Lecture 3, this folding is called aliasing, and the Nyquist condition is used to prevent different continuous-time frequencies from becoming indistinguishable after sampling.
Apply Eq. (2.40) to an impulse response and you get the object that the whole second half of the module is written in, the frequency response of an LSI system, which Eq. (2.26) already produced as the eigenvalue:
Verifying that the inverse in Eq. (2.40) really does recover \(h[n]\) is a one-line application of orthogonality, and it is worth doing because it shows the machinery of Section 2.7.2 working in the discrete world:
Compare Eqs. (2.42)–(2.43) with the Fourier-series pair in Eq. (2.35). Because \(H(e^{j\omega})\) is continuous and \(2\pi\)-periodic in \(\omega\), it has a Fourier series. Equation (2.42) is that series, with the roles of time and frequency exchanged:
The key result is that the impulse-response samples \(h[n]\) are the Fourier-series coefficients of the frequency response. This is the basis of the FIR window method in Lecture 7: specify the desired \(H(e^{j\omega})\), find its Fourier coefficients, and use those coefficients as the filter taps.
The familiar Fourier properties still apply in discrete time. Convolution becomes multiplication, windowing causes spectral convolution and leakage, a time delay adds linear phase, and a real sequence has an even magnitude spectrum and an odd phase spectrum: \(X(e^{j\omega})=X^{*}(e^{-j\omega})\).
As with the CTFT, the DTFT exists only when its infinite sum converges. For discrete-time systems, the same stability idea appears with a different geometry: the important boundary is now the unit circle rather than the \(j\Omega\)-axis.
Bound the sum term by term. Since \(|e^{-j\omega n}|=1\) for every \(n\) and every \(\omega\), the exponential contributes nothing to convergence:
A sufficient condition for DTFT convergence is that the sequence is absolutely summable. When the sequence is an impulse response, this is exactly the BIBO stability condition introduced in Lecture 1.
Lecture 4 expresses this result using the \(z\)-transform, where \(z=re^{j\omega}\). Setting \(r=1\) evaluates the transform on the unit circle and gives the DTFT. Thus, “the ROC contains the unit circle” is the discrete-time counterpart of “the Laplace ROC contains the \(j\Omega\)-axis.”
Three consequences follow immediately, and they explain things you will otherwise meet as unexplained rules later in the module.
The final case is a sequence that is both discrete and periodic: \(x[n+N]=x[n]\). As before, periodicity in time produces a discrete spectrum. The important new feature is that both the time-domain description and the frequency-domain description now contain only \(N\) numbers.
In continuous time there are infinitely many harmonics \(k\Omega_0\), \(k\in\mathbb{Z}\), all distinct. In discrete time they are not distinct. The \(k\)th and the \((k+N)\)th harmonic are the same sequence:
There are therefore exactly \(N\) distinct harmonics, not infinitely many, and the sum in the synthesis formula is finite. Everything about this rung is finite:
This is the Discrete-Time Fourier Series (DTFS): \(N\) input samples produce \(N\) frequency coefficients, with no integrals or infinite limits. A computer can evaluate this finite calculation directly. As in continuous time, the DTFT of a periodic sequence can also be written as an impulse train at the harmonic frequencies, weighted by the DTFS coefficients.
In practice, we usually have a finite block of \(N\) samples. The DTFT is continuous in frequency, so a computer cannot store every value, while the DTFS assumes that the sequence is periodic. The DFT connects these two ideas by treating the available block as one period of a repeating sequence.
The Discrete Fourier Transform (DFT) is what you get by making two decisions, each of which is Rule 1 applied deliberately rather than accidentally:
Apart from the placement of the factor \(1/N\), this is the same formula as the DTFS in Eq. (2.47). The DFT is therefore not a separate fifth transform. It is the DTFS applied to one finite block, with a name that emphasizes its computational use.
The inverse DFT reconstructs one period of an \(N\)-periodic sequence. In other words, the DFT assumes that the data block repeats forever, so the sample after the last one is the first sample again.
This assumption has two practical consequences. If the two ends do not join smoothly, the periodic extension contains a discontinuity and energy spreads into nearby bins; this is spectral leakage. Also, multiplying two DFTs produces circular convolution, in which the end of the result wraps to the beginning. Windowing reduces leakage, while the overlap-add and overlap-save methods in Lecture 7 recover linear convolution.
These behaviours are not numerical errors; they follow directly from the DFT's periodic model.
Written out, Eq. (2.47) is a matrix–vector product with \([\mathbf{W}]_{k,n}=e^{-j2\pi kn/N}\), and the inverse is (up to \(1/N\)) its conjugate transpose — the DFT matrix is unitary, which is Parseval's theorem in linear-algebra clothing:
The claim of Section 2.14, that \(X[k]=X(e^{j\omega})|_{\omega=2\pi k/N}\), is easy to state and easier to believe once plotted. This script evaluates Eq. (2.40) on a dense grid by brute force and drops the \(N\) FFT bins on top of it — reproducing Figure 2.14.a from scratch.
Goal: overlay the DFT bins on the dense DTFT curve to confirm the DFT samples it exactly, and show what zero-padding does (and doesn't) add.
Direct evaluation of an \(N\)-point DFT needs roughly \(N^2\) complex multiplications. For \(N=1024\), that is about one million operations. The Fast Fourier Transform (FFT) computes exactly the same DFT values more efficiently by reusing repeated calculations. The first step is to split the sum into even- and odd-indexed samples:
The \(N\)-point calculation is now two \(N/2\)-point DFTs plus a set of combining operations. Repeating this split gives a computational cost of order \(N\log_2N\), instead of \(N^2\). The saving grows rapidly with data length:
This efficiency makes the FFT practical for real-time processing. Spectrum analysers, OFDM systems such as Wi-Fi and mobile communications, long FIR filtering, and many audio and image codecs all use FFT algorithms to evaluate DFTs repeatedly.
Work each one before reading the solution.
The reference sheet below: the Laplace results, the four transform pairs in the order the map puts them, and the properties that get used every day.
Continuous, aperiodic spectrum.
Discrete lines at \(k\Omega_0\), infinitely many.
Continuous, \(2\pi\)-periodic spectrum.
\(N\) lines. The only computable rung; run it with an FFT.