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. |