pyOMA.core.StabilDiagram.StabilCluster#
- class pyOMA.core.StabilDiagram.StabilCluster(modal_data, prep_signals=None)[source]#
Bases:
StabilCalcThe automatic modal analysis done in three stages clustering. 1st stage: values sorted according to their soft and hard criteria by a 2-means partitioning algorithm 2nd stage: hierarchical clustering with automatic or user defined intercluster distance the automatic distance is based on the ‘df’, ‘dd’ and ‘MAC’ values from the centroids obtained in the first stage \(d = weight*df + 1 - weight*MAC + weight*dd\) 3rd stage: 2-means partitioning of the physical and spurious poles.
Neu et al.
- Identify mode candidates from a large number of system orders.
-> OMA Algorithm with n_max sufficiently high, i.e. number of mathematical modes should exceed the number pf physical modes at n <= n_max
Remove as many mathematical modes as possible.
Remove certainly mathematical modes using hard validation criteria. Re(lambda_n)>= 0 or Im(lambda_n)==0-> remove conjugates in OMA algorithm
Split modes into consistent and non-consistent sets using k-means clustering. p_i = [d_lambda, d_f, d_zeta, 1-MAC, dMPD] power transformation eq 11 h_Ti = ln(p_i) normalize: h_Ni = (h_Ti - mean(h_Ti)) / std(h_Ti) initialize centroids with (+std(h_Ni), -std(h_Ni))
Divide the remaining modes into homogeneous sets using hierarchical clustering.
- Derive cutoff distance from the probability distribution of the consistent modes.
np.percentile(a,95)
- Cluster the mode candidates based on a complex distance measure.
average linkage / single linkage
- Remove all but one mode from a single system order in one cluster.
walk over each cluster and ensure each model order exists only once in the cluster, else remove the mode with a higher distance to the cluster center
Remove the small sets, which typically consist of mathematical modes.
Reject sets that are smaller than a threshold derived from the largest set size. no recommendations given in paper (threshold 50 %)
Use outlier rejection to remove natural frequency and damping outliers. skip
Select a single mode representative from the remaining modes in each cluster. “multivariate” median
Methods
__init__(modal_data[, prep_signals])stab_* in %
add_callback(name, func)add_mode(mode_ind)automatic_classification([threshold, use_stabil])automatic_clearing([num_iter])automatic_selection([number])calculate_soft_critera_matrices()calculate_stabilization_masks([order_range, ...])decompress_flat_mask(compress_mask, flat_mask)export_results(fname[, binary])get_frequencies()get_max_f()get_modal_values(i)get_mode_shape(i)get_selected_modal_values()get_stabilization_mask(name)load_state(fname, modal_data)plot_classification([save_path])plot_clearing([save_path])plot_mask(mask[, save_path])plot_selection([save_path])Plot relevant results of the clustering.
remove_mode(mode_ind)return_results()save_state(fname)update_stabilization_masks([order_range, ...])