Install & Compatibility
Where this runs
tested against v? · pip install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.940 runs
build_error
glibcpy 3.10–3.940 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
control
✓ import control as ct
The convention 'import control as ct' is widely used in documentation and examples.
matlab
✓ from control.matlab import *
For users preferring a MATLAB-like environment and function naming conventions.
This quickstart defines a simple continuous-time state-space system, calculates its step response, and plots the output using Matplotlib. It demonstrates the basic workflow of defining a system and analyzing its time-domain behavior.
import control as ct
import numpy as np
import matplotlib.pyplot as plt
# Define a simple state-space system
A = np.array([[-0.5, -1], [1, 0]])
B = np.array([[1], [0]])
C = np.array([[0, 1]])
D = np.array([[0]])
sys = ct.ss(A, B, C, D)
# Simulate a step response
time, response = ct.step_response(sys)
# Plot the step response
plt.plot(time, response.outputs[0])
plt.xlabel('Time (s)')
plt.ylabel('Output')
plt.title('Step Response')
plt.grid()
plt.show()
Debug
Known issues
breakingSupport for the NumPy `matrix` class has been removed in version 0.10.0. All matrix operations should now use standard NumPy arrays.fixReplace `np.matrix` objects with `np.array` objects for all matrix representations and operations.
affects: >=0.10.0
breakingThe interface for plotting has changed to a `_response/_plot` calling pattern starting from version 0.10.0. Functions like `step_response` now return a `TimeResponseData` object which has a `.plot()` method, rather than directly generating a plot.fixAfter computing a response (e.g., `time, response = ct.step_response(sys)`), explicitly call `response.plot()` to generate the plot.
affects: >=0.10.0
deprecatedFunctions `connect`, `ss2io`, and `tf2io` have been deprecated in version 0.10.0. Use `interconnect` for system interconnections and note that `StateSpace` and `TransferFunction` classes are now subclasses of `NonlinearIOSystem` (rendering `ss2io` and `tf2io` obsolete).fixUse `ct.interconnect()` for connecting systems. The direct conversion functions `ss2io` and `tf2io` are no longer needed as the base classes now handle I/O system representation directly.
affects: >=0.10.0
gotchaThe `python-control` library requires Python 3.10 or higher, NumPy 1.23 or higher (2.x recommended), and SciPy 1.8 or higher. Using older versions may lead to compatibility issues or unexpected behavior.fixEnsure your Python environment meets the minimum version requirements by upgrading Python, NumPy, and SciPy to the specified versions or newer.
affects: <0.10.0 to 0.10.2
gotchaWithout the optional `slycot` library installed, some advanced functionalities and more efficient algorithms will be unavailable or operate with reduced performance. This can impact state-space conversions, robust control computations, and other routines.fixInstall `slycot` (e.g., `pip install slycot` or `conda install -c conda-forge slycot`) to unlock full library capabilities. Note that `slycot` may have its own compilation requirements (like a Fortran compiler).
affects: All versions
Upgrade
Version history
0.10.2latest on PyPI · released Jul 5, 2025
Audit
Dependencies
numpyrequiredFundamental package for numerical computing, array operations are core to control systems.
scipyrequiredProvides scientific computing tools, including signal processing and linear algebra routines used by the library.
matplotlibrequiredRequired for all plotting functionalities, such as Bode, Nyquist, and step response plots.
slycotoptionalOptional but highly recommended. Provides wrapper for FORTRAN routines from the SLICOT library, enabling more efficient and advanced control system algorithms. Some functionality may be limited or absent without it.