ca.nengo.dynamics.impl
Class CanonicalModel

java.lang.Object
  extended by ca.nengo.dynamics.impl.CanonicalModel

public class CanonicalModel
extends java.lang.Object

Utilities related to state-space models that are in controllable-canonical form.

Author:
Bryan Tripp

Constructor Summary
CanonicalModel()
           
 
Method Summary
static LTISystem changeTimeConstant(LTISystem system, float tau)
           
static float getDominantTimeConstant(LTISystem dynamics)
           
static LTISystem getRealization(float[] numerator, float[] denominator, float passthrough)
          Realizes a transfer function in the form:
static boolean isControllableCanonical(LTISystem system)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CanonicalModel

public CanonicalModel()
Method Detail

getRealization

public static LTISystem getRealization(float[] numerator,
                                       float[] denominator,
                                       float passthrough)

Realizes a transfer function in the form:

H(s) = d + (b1*s^(n-1) + b2*s^(n-2) + ... + bn) / (s^n + a1*s^(n-1) + ... + an).

Parameters:
numerator - Coefficients of the numerator of a transfer function (b1 to bn above)
denominator - Coefficients of the denominator of a transfer function (a1 to an above)
passthrough - Passthrough value (d above). If your transfer function has numerator and denominator of equal degree, divide them, give the result here, and give the remainder as the numerator and denominator arguments, so that the new numerator will have degree less than denominator. There is no state-space realization for TF with numerator degree > denominator degree.
Returns:
A controllable-canonical state-space realization of the specified transfer function

isControllableCanonical

public static boolean isControllableCanonical(LTISystem system)
Parameters:
system - Any SISO linear time-invariant system
Returns:
True if the system is in controllable-canonical form

changeTimeConstant

public static LTISystem changeTimeConstant(LTISystem system,
                                           float tau)
Parameters:
system - An LTI system in controllable-canonical form
tau - A desired new time constant
Returns:
A copy of the system, with its slowest time constant changed to the new value

getDominantTimeConstant

public static float getDominantTimeConstant(LTISystem dynamics)
Parameters:
dynamics - A linear time-invariant dynamical system
Returns:
Time constant associated with the system's dominant eigenvalue