lds::SSID #
Inherited by lds::gaussian::FitSSID, lds::poisson::FitSSID
Public Functions #
Name | |
---|---|
SSID() =default Constructs a new SSIDFit type. |
|
SSID(size_t n_x, size_t n_h, data_t dt, UniformMatrixList< kMatFreeDim2 > && u_train, UniformMatrixList< kMatFreeDim2 > && z_train, const Vector & d =Vector(1).fill(-kInf)) Constructs a new SSIDFit type. |
|
std::tuple< Fit, Vector > | Run(SSIDWt ssid_wt) Runs fitting by subspace identification (SSID) |
std::tuple< UniformMatrixList< kMatFreeDim2 >, UniformMatrixList< kMatFreeDim2 > > | ReturnData() Returns the I/O data to caller. |
Protected Functions #
Name | |
---|---|
void | CalcD(data_t t_silence =0.1, data_t thresh_silence =0.001) Using periods of silence in inputs (u), calculates the output \ bias (d) |
void | CreateHankelDataMat() Creates the block-hankel I/O data matrix. |
virtual void | DecomposeData() =0 Decompose data to lower-triangular matrix (used in Solve) |
void | CalcSVD(SSIDWt wt) performs the singular value decomposition (SVD) |
void | Solve(data_t wt_dc) solves for LDS parameters |
void | RecomputeExtObs() recompute extended observability matrix from estimates of A, C |
Protected Attributes #
Name | |
---|---|
UniformMatrixList< kMatFreeDim2 > | u_ input training data |
UniformMatrixList< kMatFreeDim2 > | z_ measurement training data |
Matrix | D_ block-Hankel I/O data matrix |
Fit | fit_ fit |
Matrix | g_dc_ I/O gain @ DC. |
data_t | dt_ sample period |
size_t | n_u_ number of inputs |
size_t | n_x_ number of states |
size_t | n_y_ number of outputs |
size_t | n_h_ |
size_t | n_trials_ number of input/output data sequences |
std::vector< size_t > | n_t_ number of time steps |
size_t | n_t_tot_ total number of time steps across trials |
Matrix | L_ lower triangle decomp of covariance matrix |
Vector | s_ singular values |
Matrix | ext_obs_t_ extended observability matrix |
Detailed Description #
template <typename Fit >
class lds::SSID;
Public Function Details #
SSID #
SSID() =default
SSID #
SSID(
size_t n_x,
size_t n_h,
data_t dt,
UniformMatrixList< kMatFreeDim2 > && u_train,
UniformMatrixList< kMatFreeDim2 > && z_train,
const Vector & d =Vector(1).fill(-kInf)
)
Parameters:
- n_x number of states
- n_h size of block-hankel data matrix
- dt sample period
- u_train input training data
- z_train measurement training data
- d output bias
Run #
std::tuple< Fit, Vector > Run(
SSIDWt ssid_wt
)
Parameters:
- ssid_wt weight for singular value decomp
Return: tuple (Fit, singular values)
ReturnData #
inline std::tuple< UniformMatrixList< kMatFreeDim2 >, UniformMatrixList< kMatFreeDim2 > > ReturnData()
Return: tuple(input data, output data)
Protected Function Details #
CalcD #
void CalcD(
data_t t_silence =0.1,
data_t thresh_silence =0.001
)
Parameters:
- t_silence threshold on period of time that qualifies as “silence”
- thresh_silence threshold on input amplitude u that qualifies as “silence”
CreateHankelDataMat #
void CreateHankelDataMat()
Creates the block-hankel I/O data matrix. Also calculates I/O gain @ DC.
DecomposeData #
virtual void DecomposeData() =0
Reimplemented by: lds::gaussian::FitSSID::DecomposeData, lds::poisson::FitSSID::DecomposeData
CalcSVD #
void CalcSVD(
SSIDWt wt
)
Parameters:
- ssid_wt weight for SVD
Solve #
void Solve(
data_t wt_dc
)
Parameters:
- wt_dc weight placed on getting correct DC I/O gain
RecomputeExtObs #
void RecomputeExtObs()
Protected Attribute Details #
u_ #
UniformMatrixList< kMatFreeDim2 > u_;
z_ #
UniformMatrixList< kMatFreeDim2 > z_;
D_ #
Matrix D_;
fit_ #
Fit fit_;
g_dc_ #
Matrix g_dc_;
dt_ #
data_t dt_ {};
n_u_ #
size_t n_u_ {};
n_x_ #
size_t n_x_ {};
n_y_ #
size_t n_y_ {};
n_h_ #
size_t n_h_ {};
n_trials_ #
size_t n_trials_ {};
n_t_ #
std::vector< size_t > n_t_;
n_t_tot_ #
size_t n_t_tot_ {};
L_ #
Matrix L_;
s_ #
Vector s_;
ext_obs_t_ #
Matrix ext_obs_t_;
Updated on 3 April 2025 at 13:48:29 EDT