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