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::poisson::FitSSID::DecomposeData, lds::gaussian::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 19 May 2022 at 17:16:03 Eastern Daylight Time