Function reference
harold
is a Python package that provides tools for analyzing feedback
control systems and designing controllers.
System creation
State (a[, b, c, d, dt]) |
A class for creating State space models. |
Transfer (num[, den, dt]) |
A class for creating Transfer functions. |
random_state_model (n[, p, m, dt, prob_dist, …]) |
Generates a continuous or discrete State model with random data. |
transfer_to_state (G[, output]) |
Converts a Transfer to a State |
state_to_transfer (state_or_abcd[, output]) |
Converts a State to a Transfer |
Discretization
discretize (G, dt[, method, prewarp_at, q]) |
Continuous- to discrete-time model conversion. |
undiscretize (G[, method, prewarp_at, q]) |
Discrete- to continuous-time model conversion. |
Controller Design
lqr (G, Q[, R, S, weight_on]) |
A full-state static feedback control design solver for which the following quadratic cost function is integrated (summed) over all positive time axis . |
ackermann (G, loc) |
Pole placement using Ackermann’s polynomial method. |
place_poles (*args, **kwargs) |
An error only function for recommending SciPy’s algorithm. |
Model Functions
transmission_zeros (A, B, C, D) |
Computes the transmission zeros of State data arrays A , B , C , D |
system_norm (G[, p, hinf_tol, eig_tol]) |
Computes the system p-norm. |
cancellation_distance (F, G) |
Computes the upper and lower bounds of the perturbation needed to render the pencil \([F-pI | G]\) rank deficient. |
controllability_indices (A, B[, tol]) |
Computes the controllability indices for a controllable pair (A, B) |
Kalman tests
controllability_matrix (G[, compress]) |
Computes the Kalman controllability and the transformation matrix. |
observability_matrix (G[, compress]) |
Computes the Kalman controllability and the transformation matrix. |
is_kalman_controllable (G) |
Tests the rank of the Kalman controllability matrix and compares it with the A matrix size, returns a boolean depending on the outcome. |
is_kalman_observable (G) |
Tests the rank of the Kalman observability matrix and compares it with the A matrix size, returns a boolean depending on the outcome. |
Time domain simulation
simulate_linear_system (sys, u[, t, x0, …]) |
Compute the linear model response to an input array sampled at given time instances. |
simulate_step_response (sys[, t]) |
Compute the linear model response to an Heaviside function (or all-ones array) sampled at given time instances. |
simulate_impulse_response (sys[, t]) |
Compute the linear model response to an Dirac delta pulse (or all-zeros array except the first sample being 1/dt at each channel) sampled at given time instances. |
impulse_response_plot (sys[, t, style]) |
Plots the impulse response of a model. |
step_response_plot (sys[, t, style]) |
Plots the step response of model(s). |
Frequency domain simulation
frequency_response (G[, w, samples, w_unit, …]) |
Compute the frequency response of a State() or Transfer() representation. |
bode_plot (sys[, w, use_db, use_hz, …]) |
Draw the Bode plot of State, Transfer model(s). |
nyquist_plot (sys[, w, use_hz, …]) |
Draw the Nyquist plot of State, Transfer model(s). |
Polynomial Operations
haroldgcd (*args) |
Takes 1D numpy arrays and computes the numerical greatest common divisor polynomial. |
haroldlcm (*args[, compute_multipliers, …]) |
Takes n-many 1D numpy arrays and computes the numerical least common multiple polynomial. |
haroldpolyadd (*args[, trim_zeros]) |
A wrapper around NumPy’s numpy.polyadd() but allows for multiple args and offers a trimming option. |
haroldpolymul (*args[, trim_zeros]) |
Simple wrapper around the numpy.convolve() function for polynomial multiplication with multiple args. |
haroldpolydiv (dividend, divisor) |
Polynomial division wrapped around scipy.signal.deconvolve() function. |
haroldcompanion (somearray) |
Takes a 1D numpy array or list and returns the companion matrix of the monic polynomial of somearray. |
haroldker (N[, side]) |
This function is a straightforward basis computation for the right/left nullspace for rank deficient or fat/tall matrices. |
Auxillary Functions
matrix_slice (M, corner_shape[, corner]) |
Takes a two dimensional array M and slices into four parts dictated by the corner_shape and the corner string corner . |
e_i (width[, nth, output]) |
Returns the nth column(s) of the identity matrix with shape (width,width) . |
concatenate_state_matrices (G) |
Takes a State() model as input and returns the A, B, C, D matrices combined into a full matrix. |
haroldsvd (A[, also_rank, rank_tol]) |
This is a wrapper/container function of both the SVD decomposition and the rank computation. |