sdynpy.signal_processing.sdynpy_frf_inverse.frf_inverse
- frf_inverse(frf_matrix, method='standard', response_weighting_matrix=None, reference_weighting_matrix=None, regularization_weighting_matrix=None, regularization_parameter=None, cond_num_threshold=None, num_retained_values=None)[source]
Computes the inverse of an FRF matrix for source estimation problems.
- Parameters
frf_matrix (NDArray) – Transfer function as an np.ndarray, should be organized such that the size is [number of lines, number of responses, number of references]
method (str, optional) –
- The method to be used for the FRF matrix inversions. The available
- methods are:
standard - basic pseudo-inverse via numpy.linalg.pinv with the default rcond parameter, this is the default method
threshold - pseudo-inverse via numpy.linalg.pinv with a specified condition number threshold
tikhonov - pseudo-inverse using the Tikhonov regularization method
truncation - pseudo-inverse where a fixed number of singular values are retained for the inverse
- response_weighting_matrixsdpy.Matrix or np.ndarray, optional
Diagonal matrix used to weight response degrees of freedom (to solve the problem as a weight least squares) by multiplying the rows of the FRF matrix by a scalar weights. This matrix can also be a 3D matrix such that the the weights are different for each frequency line. The matrix should be sized [number of lines, number of references, number of references], where the number of lines either be one (the same weights at all frequencies) or the length of the abscissa (for the case where a 3D matrix is supplied).
- reference_weighting_matrixsdpy.Matrix or np.ndarray, optional
Diagonal matrix used to weight reference degrees of freedom (generally for normalization) by multiplying the columns of the FRF matrix by a scalar weights. This matrix can also be a 3D matrix such that the the weights are different for each frequency line. The matrix should be sized [number of lines, number of references, number of references], where the number of lines either be one (the same weights at all frequencies) or the length of the abscissa (for the case where a 3D matrix is supplied).
- regularization_weighting_matrixsdpy.Matrix or np.ndarray, optional
Matrix used to weight input degrees of freedom via Tikhonov regularization. This matrix can also be a 3D matrix such that the the weights are different for each frequency line. The matrix should be sized [number of lines, number of references, number of references], where the number of lines either be one (the same weights at all frequencies) or the length of the abscissa (for the case where a 3D matrix is supplied).
- regularization_parameterfloat or np.ndarray, optional
Scaling parameter used on the regularization weighting matrix when the tikhonov method is chosen. A vector of regularization parameters can be provided so the regularization is different at each frequency line. The vector must match the length of the abscissa in this case (either be size [num_lines,] or [num_lines, 1]).
- cond_num_thresholdfloat or np.ndarray, optional
Condition number used for SVD truncation when the threshold method is chosen. A vector of condition numbers can be provided so it varies as a function of frequency. The vector must match the length of the abscissa in this case.
- num_retained_valuesfloat or np.ndarray, optional
Number of singular values to retain in the pseudo-inverse when the truncation method is chosen. A vector of can be provided so the number of retained values can change as a function of frequency. The vector must match the length of the abscissa in this case.
- Returns
Inverse of the supplied FRF matrix
- Return type
np.ndarray
- Raises
Warning – If regularization_weighting_matrix is supplied without selecting the tikhonov method
Exception – If the threshold method is chosen but a condition number threshold isn’t supplied
Exception – If the declared method is not one of the available options
Notes
This function solves the inverse problem for the supplied FRF matrix. All of the inverse methods use the SVD (or modified SVD) to compute the pseudo-inverse.
References
- 1
Wikipedia, “Moore-Penrose inverse”. https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse
- 2
A.N. Tithe, D.J. Thompson, The quantification of structure-borne transmission pathsby inverse methods. Part 2: Use of regularization techniques, Journal of Sound and Vibration, Volume 264, Issue 2, 2003, Pages 433-451, ISSN 0022-460X, https://doi.org/10.1016/S0022-460X(02)01203-8.
- 3
Wikipedia, “Ridge regression”. https://en.wikipedia.org/wiki/Ridge_regression