Bird
Raised Fist0
Signal Processingdata~10 mins

Stability analysis (pole-zero plot) in Signal Processing - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Stability analysis (pole-zero plot)
Define system transfer function
↓
Calculate poles and zeros
↓
Plot poles and zeros on complex plane
↓
Check pole locations
↓
Inside unit circle?
↓
System is stable
Start by defining the system, find poles and zeros, plot them, then check if poles lie inside the unit circle to decide stability.
Execution Sample
Signal Processing
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from scipy.signal import tf2zpk

b = [0.5, -0.5]
a = [1, -0.8]
z, p, k = tf2zpk(b, a)
plt.scatter(np.real(z), np.imag(z), marker='o', label='Zeros')
plt.scatter(np.real(p), np.imag(p), marker='x', label='Poles')
plt.gca().add_artist(Circle((0,0),1,color='r',fill=False,ls='--'))
plt.legend()
plt.show()
This code finds poles and zeros of a system and plots them on the complex plane with the unit circle.
Execution Table
StepActionPoles (p)Zeros (z)Check Pole RadiusStability Decision
1Define numerator coefficients b=[0.5, -0.5]----
2Define denominator coefficients a=[1, -0.8]----
3Calculate zeros and poles using tf2zpkp=[0.8]z=[1.0]--
4Calculate radius of pole |0.8|0.8-0.8 < 1-
5Since all poles have radius < 1---System is stable
6Plot poles (x) and zeros (o) on complex planep=[0.8]z=[1.0]--
7Draw unit circle for reference----
8End of analysis----
💡 All poles have magnitude less than 1, so system is stable.
Variable Tracker
VariableStartAfter Step 3After Step 4Final
b (numerator coeffs)[ ][0.5, -0.5][0.5, -0.5][0.5, -0.5]
a (denominator coeffs)[ ][1, -0.8][1, -0.8][1, -0.8]
z (zeros)[ ][1.0][1.0][1.0]
p (poles)[ ][0.8][0.8][0.8]
pole radius[ ][ ]0.80.8
Key Moments - 3 Insights
Why do we check if poles are inside the unit circle?
Because poles inside the unit circle mean the system's output will not grow unbounded over time, indicating stability (see Step 4 and 5 in execution_table).
What is the difference between poles and zeros on the plot?
Poles (marked with 'x') are points where the system's response can become infinite, zeros (marked with 'o') are points where the output is zero; stability depends on poles only (see Step 6).
Why is the unit circle drawn on the plot?
The unit circle helps visually check if poles lie inside it, which is the key criterion for stability (see Step 7).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 4, what is the radius of the pole?
A1.0
B0.5
C0.8
D1.2
💡 Hint
Check the 'Check Pole Radius' column at Step 4 in execution_table.
At which step does the system get declared stable?
AStep 3
BStep 5
CStep 6
DStep 7
💡 Hint
Look at the 'Stability Decision' column in execution_table.
If a pole had radius 1.2, what would change in the execution_table?
AStability Decision would say 'System is unstable'
BZeros would move outside unit circle
CPoles would be marked with 'o' instead of 'x'
DNo change in stability decision
💡 Hint
Refer to Step 5 where stability depends on pole radius.
Concept Snapshot
Stability analysis uses poles and zeros of a system.
Poles are roots of denominator; zeros are roots of numerator.
Plot poles (x) and zeros (o) on complex plane.
If all poles lie inside unit circle (radius < 1), system is stable.
Unit circle is drawn as reference on plot.
Stability depends only on poles, not zeros.
Full Transcript
We start by defining the system's numerator and denominator coefficients. Then we calculate the zeros and poles using a function. We plot these on the complex plane, marking zeros with circles and poles with crosses. We draw the unit circle to check visually. The key step is checking the radius of each pole. If all poles have radius less than 1, the system is stable. This is because poles inside the unit circle mean the system's output will not grow without bound. The zeros do not affect stability but are shown for completeness. The plot and radius check together give a clear stability analysis.

Practice

(1/5)
1. What does it mean for a system to be stable in terms of its poles on the pole-zero plot?
easy
A. All poles must lie in the left half of the complex plane (negative real parts).
B. All poles must lie on the imaginary axis.
C. All zeros must lie in the right half of the complex plane.
D. Poles and zeros must be equal in number.

Solution

  1. Step 1: Understand pole location and stability

    Stability depends on poles, not zeros. Poles with negative real parts mean the system's response decays over time.
  2. Step 2: Identify correct pole location for stability

    Poles in the left half-plane (negative real parts) ensure the system is stable.
  3. Final Answer:

    All poles must lie in the left half of the complex plane (negative real parts). -> Option A
  4. Quick Check:

    Stable system = poles with negative real parts [OK]
Hint: Stable system means poles left of imaginary axis [OK]
Common Mistakes:
  • Confusing zeros with poles for stability
  • Thinking poles on imaginary axis are stable
  • Assuming zeros affect stability directly
2. Which of the following is the correct Python syntax to plot poles and zeros using the scipy.signal library?
easy
A. signal.pzmap(system, plot=True)
B. signal.pzplot(system)
C. signal.pzplot(system, plot=True)
D. signal.pzmap(system, plot=False)

Solution

  1. Step 1: Recall scipy.signal function for pole-zero plot

    The function to plot poles and zeros is pzmap, not pzplot.
  2. Step 2: Check correct usage with plotting enabled

    Using pzmap with plot=True plots the pole-zero map correctly.
  3. Final Answer:

    signal.pzmap(system, plot=True) -> Option A
  4. Quick Check:

    Use pzmap with plot=True for pole-zero plot [OK]
Hint: Use pzmap with plot=True to plot poles and zeros [OK]
Common Mistakes:
  • Using non-existent function pzplot
  • Forgetting plot=True argument
  • Confusing function names
3. Given the poles of a system as poles = [-1+2j, -1-2j, 0.5], what can you say about the system's stability?
medium
A. The system is stable because poles are complex conjugates.
B. The system is stable because all poles have negative real parts.
C. The system is marginally stable because poles are on the imaginary axis.
D. The system is unstable because one pole has a positive real part.

Solution

  1. Step 1: Analyze the real parts of each pole

    Poles are -1+2j (real part -1), -1-2j (real part -1), and 0.5 (real part 0.5).
  2. Step 2: Determine stability from pole real parts

    Since one pole has positive real part (0.5), the system is unstable.
  3. Final Answer:

    The system is unstable because one pole has a positive real part. -> Option D
  4. Quick Check:

    Positive real pole means unstable system [OK]
Hint: Check if any pole has positive real part for instability [OK]
Common Mistakes:
  • Ignoring positive real part pole
  • Assuming complex conjugates guarantee stability
  • Confusing marginal stability with instability
4. The following Python code attempts to plot poles and zeros but gives an error:
from scipy import signal
system = signal.TransferFunction([1, 3], [1, 2, 1])
signal.pzplot(system)

What is the error and how to fix it?
medium
A. TransferFunction requires discrete=True for pzplot to work.
B. TransferFunction arguments are reversed; swap numerator and denominator.
C. Function pzplot does not exist; use pzmap(system, plot=True) instead.
D. Import statement is wrong; use import scipy.signal as signal.

Solution

  1. Step 1: Identify the function causing error

    The function pzplot does not exist in scipy.signal, causing the error.
  2. Step 2: Use correct function to plot poles and zeros

    Use pzmap(system, plot=True) to plot poles and zeros correctly.
  3. Final Answer:

    Function pzplot does not exist; use pzmap(system, plot=True) instead. -> Option C
  4. Quick Check:

    Use pzmap, not pzplot, for pole-zero plots [OK]
Hint: Use pzmap with plot=True, not pzplot [OK]
Common Mistakes:
  • Using non-existent pzplot function
  • Swapping numerator and denominator unnecessarily
  • Wrong import statement causing confusion
5. You have a system with poles at -0.5, -1+1j, -1-1j and zeros at 0, -2. Which statement best describes the system's stability and response?
hard
A. The system is marginally stable because of zeros at zero.
B. The system is stable with oscillatory decay due to complex poles.
C. The system is unstable because zeros are on the right half-plane.
D. The system is unstable due to poles with positive real parts.

Solution

  1. Step 1: Check pole locations for stability

    All poles have negative real parts (-0.5, -1), so system is stable.
  2. Step 2: Analyze pole types for response behavior

    Complex conjugate poles (-1±1j) cause oscillations that decay over time.
  3. Step 3: Consider zeros' effect on stability

    Zeros do not affect stability directly; zeros at 0 and -2 are not in right half-plane.
  4. Final Answer:

    The system is stable with oscillatory decay due to complex poles. -> Option B
  5. Quick Check:

    Negative real poles + complex = stable oscillatory decay [OK]
Hint: Stable if poles negative; complex poles cause oscillations [OK]
Common Mistakes:
  • Confusing zeros with poles for stability
  • Thinking zeros at zero cause instability
  • Ignoring oscillatory nature of complex poles
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard