Skip to content

Properties of LTI systems

Reorder cascades and merge parallel systems with convolution's own algebra, read causality and stability off h, and see why a spinning signal passes through unchanged in rate.

Before thisSystem properties (4.2), Discrete convolution (5.2)

Before this4.2 · 5.2
Chapter 5 · Lesson 4 of 4

First, the picture

Two systems in a chain: flip Order and watch the output trace.

Does the order matter?

Two systems in a chain, wired one way round and then the other.

first h1, then h2first h2, then h1
Order
Difference between orders
0.00

h1 = [1, 1], h2 = [1, -1]

Describe this picture

One plot of the output of two systems in a chain, wired “first h1, then h2” or “first h2, then h1”, chosen with the two “Order” buttons. The readout “Difference between orders” gives the largest gap between the two outputs.

Does the order matter?

Chain two guitar pedals together, an overdrive into a reverb, and you get one sound. Swap their order, reverb into overdrive, and you get a different sound, at least for most pairs of pedals. But two LTI systems (linear, time-invariant, exactly the kind convolution builds) are not like that. I can wire them in either order and the output never changes at all, and the last page’s own algebra is why.

Convolution is associative: (x∗h1)∗h2=x∗(h1∗h2)(x*h_1)*h_2=x*(h_1*h_2). It’s also commutative: h1∗h2=h2∗h1h_1*h_2=h_2*h_1. Put those together and a cascade of two systems, output of the first fed into the second, can be replaced by one system with impulse response h1∗h2h_1*h_2, and it doesn’t matter which of h1h_1, h2h_2 you convolve first.

Take h1=1,1h_1=1,1 and h2=1,−1h_2=1,-1 and feed the chain x=1,2,3x=1,2,3. Convolving h1h_1 then h2h_2 first gives h1∗h2=1,0,−1h_1*h_2=1,0,-1, and x∗(h1∗h2)=1,2,2,−2,−3x*(h_1*h_2)=1,2,2,-2,-3 . Going the other way, x∗h1=1,3,5,3x*h_1=1,3,5,3 (5.2’s own worked example), then (x∗h1)∗h2=1,2,2,−2,−3(x*h_1)*h_2=1,2,2,-2,-3 Identical.

Go back to the chain at the top of the page and read Difference between orders. It stays at 0.00 no matter which way you set it: the output trace doesn’t move a single sample.

Two paths, or one

Now split, instead of chain. Run the same input through two systems in parallel, one path into h1h_1, a separate path into h2h_2, and add the two outputs together at the end, the way a “dry” signal and a reverb signal get mixed back together. Convolution distributes over addition, x∗(h1+h2)=x∗h1+x∗h2x*(h_1+h_2)=x*h_1+x*h_2, so adding the two paths’ outputs gives exactly the same result as building one combined system with impulse response h1+h2h_1+h_2 and running the input through that instead.

With the same h1=1,1h_1=1,1 and h2=1,−1h_2=1,-1 from before, h1+h2=2,0h_1+h_2=2,0 : two paths added, or one system with h=2,0h=2,0, land on the same numbers either way.

Switch Route between “Two paths” and “One path” and read Difference between routes.

Two paths, or one

Add the outputs of two systems, or add their responses first and use one system.

h1h2h1 + h2
two paths, addedone path, h1 + h2
Route
Difference between routes
0.00
Describe this picture

Two plots: the impulse responses h1h_1, h2h_2 and their sum h1+h2h_1 + h_2, and the output by the route chosen with the “Route” buttons, “Two paths” (two paths, added) or “One path” (one path, h1+h2h_1 + h_2). The readout “Difference between routes” gives the largest gap between them.

Notice it too stays at 0.00: whichever route you build, the output trace lands on the identical values, sample for sample.

Reading causality and stability off h

System-properties (4.2) tested causality and stability by trying inputs on a system and watching what came out. For an LTI system you don’t need to try anything: both properties are sitting right there in h[n]h[n] itself.

A system is causal when its output can’t depend on an input sample that hasn’t happened yet. For an LTI system that’s exactly the statement h[n]=0h[n]=0 for every n<0n<0: a nonzero hh before n=0n=0 would mean the system’s response has already started before the spike that’s supposed to cause it arrives.

A system is BIBO stable when every bounded input produces a bounded output. For an LTI system, add up the size of every sample of hh, ignoring sign, ∣h[0]∣+∣h[1]∣+∣h[2]∣+…\lvert h[0]\rvert+\lvert h[1]\rvert+\lvert h[2]\rvert+\dots, and call that running total “the total of hh‘s sizes.” If that total stays finite, however far out you add, the system is stable; if it keeps climbing without limit, it isn’t. Written with a summation sign, that total is ∑n∣h[n]∣\sum_n\lvert h[n]\rvert.

Take h[n]=(0.5)nh[n]=(0.5)^n for n≥0n\ge0 (a decaying echo settling toward zero). Its total of sizes is the geometric series ∑n=0∞0.5n=11−0.5=2\sum_{n=0}^\infty 0.5^n=\tfrac{1}{1-0.5}=2, finite, so it’s stable. Take h[n]=(1.5)nh[n]=(1.5)^n for n≥0n\ge0 instead (a growing feedback loop): that geometric series has ratio 1.5>11.5>1, so it diverges, and the system is unstable.

Step Impulse response through Echo, Smoother, Settling and Growing, and read Causal? and Stable?.

Reading causality and stability off h

Does h start before now? Does the total of its sizes stay finite?

Impulse response
Causal?
Yes: nothing before n = 0
Stable?
Yes: the total settles at 1.50
Describe this picture

Two plots: the impulse response h[n]h[n] of the chosen system, and the running total of ∣h[n]∣\lvert h[n]\rvert. Four “Impulse response” buttons choose “Echo”, “Smoother”, “Settling” or “Growing”. The readout “Causal?” says whether hh uses a sample before n=0n = 0, and “Stable?” whether the total of its sizes stays finite.

Notice the Growing preset’s total never settles down, however far right you imagine looking, while the other three all reach a fixed number and stop climbing.

Does the response ever really stop?

Some impulse responses hit exactly zero after some point and stay there. Others only ever get smaller, forever, without ever landing on zero exactly. Both kinds show up constantly, and it’s worth having names for them.

An impulse response that’s exactly zero past some finite point is a finite impulse response, usually shortened to FIR. A three-sample moving average, h=13,13,13h=\tfrac13,\tfrac13,\tfrac13, is one: it has exactly three nonzero samples and is zero everywhere else, so its total of sizes is automatically finite too, an FIR is always stable. An impulse response that goes on forever, even while shrinking toward zero, is an infinite impulse response, or IIR: the settling loop from the last instrument, h[n]=(0.5)nh[n]=(0.5)^n, never actually reaches zero, no matter how far out you look.

Switch Response between “Finite (FIR)” and “Infinite (IIR)” and read Last nonzero sample.

Does the response ever really stop?

A three-sample average against the settling response from before.

Response
Last nonzero sample
n = 2, then exactly zero
Describe this picture

One plot of an impulse response from n=0n = 0, with two “Response” buttons: “Finite (FIR)”, a three-sample average, and “Infinite (IIR)”, the settling response. The readout “Last nonzero sample” gives nn and “then exactly zero”, or says “never: it only keeps getting smaller”.

Notice the finite trace finds an exact last nonzero sample and stops there, while the infinite trace’s readout admits there isn’t one, it only keeps getting smaller.

What comes out when a spinning signal goes in?

Back in 3.4, a phasor was a point spinning around the origin at a constant rate. Measured once per sample, that rate is Ω\Omega radians per sample, its across value tracing a cosine and its up value tracing a sine. Feed that spinning point into an LTI system, and something clean happens: it comes back out still spinning at exactly the same rate, only scaled in size and turned to a new starting angle. One fixed complex number does both jobs at once, and I’ll call it H(ejΩ)H(e^{j\Omega}). A signal that a system hands back with nothing changed but its size and angle is called an eigenfunction of that system (from the German eigen, “its own”), and spinning points are eigenfunctions of every stable LTI system (for a growing hh like the one above, the sum that gives HH never settles, so there is no single number to scale by).

Here’s why. Convolving x[n]=ejΩnx[n]=e^{j\Omega n} with hh gives y[n]=∑kh[k] ejΩ(n−k)=ejΩn∑kh[k] e−jΩky[n]=\sum_k h[k]\,e^{j\Omega(n-k)}=e^{j\Omega n}\sum_k h[k]\,e^{-j\Omega k}. The sum ∑kh[k] e−jΩk\sum_k h[k]\,e^{-j\Omega k} doesn’t depend on nn at all, it’s one fixed complex number, so y[n]=H(ejΩ) ejΩny[n]=H(e^{j\Omega})\,e^{j\Omega n} with H(ejΩ)=∑kh[k] e−jΩkH(e^{j\Omega})=\sum_k h[k]\,e^{-j\Omega k}. The input’s own spin rate, Ω\Omega, survives untouched; only its size and angle change.

Take h=1,0.5h=1,0.5 (a spike now, half a spike one sample later) and a phasor spinning a quarter turn per sample, Ω=π/2\Omega=\pi/2. Directly, y[n]=x[n]+0.5 x[n−1]=ejπn/2(1+0.5 e−jπ/2)=ejπn/2(1−0.5j)y[n]=x[n]+0.5\,x[n-1]=e^{j\pi n/2}\big(1+0.5\,e^{-j\pi/2}\big)=e^{j\pi n/2}(1-0.5j). That matches H(ejπ/2)=h[0]+h[1]e−jπ/2=1−0.5jH(e^{j\pi/2})=h[0]+h[1]e^{-j\pi/2}=1-0.5j, a single complex number with magnitude 12+0.52=1.11803\sqrt{1^2+0.5^2}=1.11803 and angle about −26.565°-26.565° (a little below the horizontal axis): the spinning point comes out 1.118×1.118\times its original size, turned back by 26.565°26.565°, spinning at the exact same rate it went in at.

Not every system does this. A squarer, y[n]=x[n]2y[n]=x[n]^2, is not LTI (4.2 already showed it fails linearity): squaring a phasor spinning at Ω\Omega doubles its spin rate instead, (ejΩn)2=ej2Ωn\big(e^{j\Omega n}\big)^2=e^{j2\Omega n}, something no single scaling number could ever produce.

Switch System between Echo and Squarer and read What happened to it.

What comes out when a spinning signal goes in?

A point turning a quarter turn per sample, fed through an echo or a squarer.

across (real)up (imaginary)
across (real)up (imaginary)
System
What happened to it
Same spin, scaled by 1.12 and turned -26.6° (one number: 1.00 − 0.50j)
Describe this picture

Two plots against sample number: the input, a point turning a quarter turn per sample, and the system’s output, each shown as its across (real) and up (imaginary) parts. Two “System” buttons choose “Echo” or “Squarer”, and the readout “What happened to it” says how the spin changed.

Notice the echo’s output always spins at the input’s own rate, just resized and turned, while the squarer’s output visibly spins twice as fast, a doubled rate that no single complex number could explain.

The maths behind it · eigenvalues

T{ejΩn}=H(ejΩ) ejΩnT\{e^{j\Omega n}\}=H(e^{j\Omega})\,e^{j\Omega n} is literally an eigenvector equation, Av=λv\mathbf{A}\mathbf{v}=\lambda\mathbf{v}: for a stable LTI system, complex exponentials are its eigenvectors, and H(ejΩ)H(e^{j\Omega}) is its eigenvalue.

Where you’ll meet this

Reordering a cascade of guitar pedals or camera filters, or folding two parallel effects into one, both lean on the associativity and distributivity you just used. Reading stability straight off hh is exactly how a feedback design gets checked before it’s ever built, instead of by listening for it to run away. FIR and IIR are the two families every filter you’ll design later falls into. And the eigenfunction property, one fixed complex number turning a spinning input into a scaled, rotated version of itself, is the exact idea the frequency response builds on starting in Chapter 12.

Reference card

PropertyStatementNotes
Associative(x∗h1)∗h2=x∗(h1∗h2)(x*h_1)*h_2=x*(h_1*h_2)cascade order is free; combine into one h1∗h2h_1*h_2
Commutativeh1∗h2=h2∗h1h_1*h_2=h_2*h_1order of convolving the two responses doesn’t matter
Distributivex∗(h1+h2)=x∗h1+x∗h2x*(h_1+h_2)=x*h_1+x*h_2parallel systems add their impulse responses
Causalh[n]=0h[n]=0 for n<0n<0output can’t depend on a sample that hasn’t arrived
BIBO stable∑n∣h[n]∣<∞\sum_n\lvert h[n]\rvert<\inftythe total of hh‘s sizes stays finite
FIR / IIRh[n]=0h[n]=0 beyond some finite NN / never exactly zeroFIR is always stable
Eigenfunction propertyejΩn→H(ejΩ) ejΩne^{j\Omega n}\to H(e^{j\Omega})\,e^{j\Omega n}, H(ejΩ)=∑kh[k] e−jΩkH(e^{j\Omega})=\sum_k h[k]\,e^{-j\Omega k}seed of the frequency response

That closes out the foundations, Chapters 1 through 5, every idea from here on builds on this set.

End of lesson 5.4

Where to go next.

Phasorium
LibraryEvery lesson, in order

Parts

About Phasorium
Look