pub mod armax;
pub mod arx;
pub mod instrumental_variables;
pub mod subspace;
pub mod validation;
pub use armax::{ArmaxModel, ELSIdentifier};
pub use arx::{fit_percent as arx_fit_percent, ArxIdentifier, ArxModel, RecursiveArx};
pub use instrumental_variables::{IvIdentifier, RefIvIdentifier};
pub use subspace::{SubspaceIdConfig, SubspaceModel};
pub use validation::{
autocorrelation, cross_correlation, fit_percent, residual_analysis, whiteness_test,
ResidualStats,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SysIdError {
InvalidData,
SingularMatrix,
InsufficientData,
NotConverged,
}
impl core::fmt::Display for SysIdError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
SysIdError::InvalidData => write!(f, "sysid: invalid data (NaN/Inf)"),
SysIdError::SingularMatrix => write!(f, "sysid: singular matrix"),
SysIdError::InsufficientData => write!(f, "sysid: insufficient data"),
SysIdError::NotConverged => write!(f, "sysid: algorithm did not converge"),
}
}
}