pyOMA.core.SSIData.SSIDataCV#
- class pyOMA.core.SSIData.SSIDataCV(*args, **kwargs)[source]#
Bases:
SSIDataMC- __init__(*args, **kwargs)#
channel definition: channels start at 0
Methods
__init__(*args, **kwargs)channel definition: channels start at 0
build_block_hankel([num_block_rows, ...])Builds serveral Block-Hankel Matrices of the measured time series with varying time lags and estimates the subspace matrices from their LQ decompositions.
compute_modal_params([max_model_order, j, ...])Perform a multi-order computation of modal parameters.
estimate_state(order)Estimate the state matrices A, C and noise covariances Q, R and S from the subspace / projection matrix.
init_from_config(conf_file, prep_signals)A method for initializing a modal object from configuration data bypassing common operations in explicit code for semi-automated analyses
integrate_quantities(vector, accel_channels, ...)Rescales mode shapes from modal accelerations / velocities to modal displacements, by multiplication of the relevant modal coordinates (where accelerometers, or velocimeters were used, with $-1 omega^2$ or $i omega$, respectively,
load_state(fname, prep_signals)Loads the state of the object from a compressed numpy archive file and returns the object This is only a stub for reimplementing the method in a derived class
modal_analysis(A, C[, rescale_fun])Computes the modal parameters from a given state space model as described by Peeters 1999 and Döhler 2012.
remove_conjugates(eigval[, eigvec_r, ...])This method finds complex conjugate modes, and removes unstable and overdamped poles.
rescale_mode_shape(modeshape[, rotate_only])Rescales and rotates modeshapes in the complex plane.
save_state(fname)Saves the state of the object to a compressed numpy archive file This is only a stub for reimplementing the method in a derived class
synthesize_signals(A, C, Q, R, S[, ...])Computes the modal response signals and the contribution of each mode.
- build_block_hankel(num_block_rows=None, num_blocks=1, training_blocks=None, reduced_projection=True)[source]#
Builds serveral Block-Hankel Matrices of the measured time series with varying time lags and estimates the subspace matrices from their LQ decompositions. Uniqueness of the subspace estimates is ensured by an intermediate LQ decomposition, where the diagonals of the L matrices are constrained to positive values. A subspace matrix estimate is computed by the mean over the training blocks leaving any remainig blocks for validation.
Note: Blocks are not completely i.i.d. as we borrow p+q timesteps from the previous block for the projection of a full block (assembly of Hankel matrix)
Todo
investigate correct scaling of the subspace matrices [sqrt(N_b), sqrt(N_b * num_blocks), sqrt(N_b*n_training_blocks)] ?
use sparse SVD (scipy.sparse.svds) to save memory and cpu time
- Parameters:
num_block_rows (integer, required) – The number of block rows of the Subspace matrix
num_blocks (integer, optional) – The number of blocks, used for cross-validation
training_blocks (list, optional) – The selected blocks to use for system identification (=training)
- synthesize_signals(A, C, Q, R, S, validation_blocks=None, N_offset=None, **kwargs)[source]#
Computes the modal response signals and the contribution of each mode. The algorithm follows Peeters 1999 and the Lyapunov equation is solved as a discrete-time algebraic Riccati equation (DARE). For long signals, the computation may become time-consuming, thus only time steps up to j may be used to synthesize the signal.
- Parameters:
A (numpy.ndarray) – State matrix: Array of shape (order, order)
C (numpy.ndarray) – Output matrix: Array of shape (num_analised_channels, order)
Q (numpy.ndarray) – state noise covariance matrix: Symmetric array of shape (order, order)
R (numpy.ndarray) – signal noise covariance matrix: Array of shape (num_analised_channels, num_analised_channels)
S (numpy.ndarray) – system noise - signal noise covariance matrix: Array of shape (order, num_analised_channels)
validation_blocks (list, optional) – The selected blocks to be synthethized and used for system validation.
N_offset (integer, optional) – The number of samples to be used from any previous block for Kalman-Filter startup.
- Returns:
sig_synth (numpy.ndarray, shape (num_analised_channels, j, order // 2)) – Array holding the modally decomposed input signals for each channel n_l and all modes
modal_contributions (numpy.ndarray, shape (order, )) – Array holding the contributions of each mode to the input signals.