lds::SSID

lds::SSID #

More…

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