sdynpy.signal_processing.sdynpy_frf.sysmat2frf

sysmat2frf(frequencies, M, C, K, frf_type='disp')[source]

Compute Frequency Response Functions given system matrices M, C, and K

This function computes frequency response functions (FRFs) given the system mass matrix, M, damping matrix, C, and stiffness matrix, K, in the equation of motion

M x_dd + C x_d + K x = F

This will return the frequency response function

H = x/F

as a function of frequency.

Parameters
  • frequencies (ndarray) – frequencies should be a 1D np.ndarray consisting of the frequency lines at which to evaluate the frequency response function. They should be in units of cycles per second or hertz (Hz), rather than in angular frequency of radians/s.

  • M (ndarray) – M should be a 2D np.ndarray consisting of the system mass matrix.

  • C (ndarray) – C should be a 2D np.ndarray consisting of the system damping matrix.

  • K (ndarray) – K should be a 2D np.ndarray consisting of the system stiffness matrix.

  • frf_type (str) – frf_type should be one of [‘disp’,’vel’,’accel’] or [‘displacement’, ‘velocity’,’acceleration’] to specify which “type” of frequency response function to compute. By default it computes a displacement or “receptance” FRF. However, if an acceleration or “Accelerance” FRF is desired, specify ‘accel’ instead. The displacement, velocity, and acceleration FRFs differ by a factor of 1j*omega where omega is the angular frequency at a given frequency line.

Returns

H – A 3D np array with shape (nf,no,ni), where nf is the number of frequency lines, no is the number of outputs, and ni is the number of inputs. Since M, C, and K should be square, ni should equal no. Values in H are complex.

Return type

ndarray

Notes

This performs a direct inversion of the system matrix, therefore it is not advisable to compute FRFs of large systems using this method. An alternative would be to compute modes first then compute the FRFs from the modes.