Struct distributed_control::dynamics::LtiDynamics
source · pub struct LtiDynamics<T: LinalgScalar> {
pub a_mat: Array2<T>,
pub b_mat: Array2<T>,
pub c_mat: Array2<T>,
pub d_mat: Array2<T>,
}
Expand description
Implement linear, time-invariant (LTI) dynamics. I.e., $\dot{x} = A x + B u$.
Example
use ndarray::array;
use distributed_control::dynamics::{Dynamics, LtiDynamics};
let dynamics = LtiDynamics::new(array![[0., 1.], [0., 0.]], array![[0.], [1.]]);
assert_eq!(dynamics.dynamics(0., &array![1., 2.], &array![3.]), array![2., 3.]);
assert_eq!(dynamics.n_input(), 1);
assert_eq!(dynamics.n_state(), 2);
Fields§
§a_mat: Array2<T>
§b_mat: Array2<T>
§c_mat: Array2<T>
§d_mat: Array2<T>
Implementations§
source§impl<T: LinalgScalar> LtiDynamics<T>
impl<T: LinalgScalar> LtiDynamics<T>
sourcepub fn new(a_mat: Array2<T>, b_mat: Array2<T>) -> LtiDynamics<T>
pub fn new(a_mat: Array2<T>, b_mat: Array2<T>) -> LtiDynamics<T>
Create an LTI system from an $A$ matrix (a_mat
) and a $B$ matrix (b_mat
)
Trait Implementations§
source§impl<T: Debug + LinalgScalar> Debug for LtiDynamics<T>
impl<T: Debug + LinalgScalar> Debug for LtiDynamics<T>
Auto Trait Implementations§
impl<T> Freeze for LtiDynamics<T>
impl<T> RefUnwindSafe for LtiDynamics<T>where
T: RefUnwindSafe,
impl<T> Send for LtiDynamics<T>where
T: Send,
impl<T> Sync for LtiDynamics<T>where
T: Sync,
impl<T> Unpin for LtiDynamics<T>
impl<T> UnwindSafe for LtiDynamics<T>where
T: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more