# Use of modalfrf for operating measurements

12 views (last 30 days)
AC_GBX on 16 Aug 2020
Commented: AC_GBX on 18 Aug 2020
Hello,
I need to calculate the FRF for a mechanical system where the exitation has its origin from a gearbox. I generated simulation data while the mechanical systems rotates under operating conditions. I generated data of velocity an acceleration. For my acoustical analysis I need the frequency response function. So I wanted to calculate them by using the function modalfrf. But I am not sure if I can use this function due to the fact that I do not have a hammer or shaker exitation. So is it possible to calculate the FRF with this function or do I need to use another function?
Thank you very much in advance.

Rajiv Singh on 17 Aug 2020
Edited: Rajiv Singh on 17 Aug 2020
This is essentially a system identification problem. You have non-parametric (tfestimate, spa, spafdr, etfe) techniques and parametric techniques (ssest, tfest). MODALFRF implements both approaches. When the 'Estimator' is H1 or H2, it is doing something similar to tfestimate and producing a non-parametric estimate of frequency response using correlation analysis (e.g., H = Syy/Sxy, where Syy is output spectrum = fft(Ryy), where Ryy is auto-correlation sequence, etc). When you use 'Estimator'/'subspace', it implements a parametric subspace identification (n4sid) algorithm to first estimate a state-space model and then compute its frequency response using FREQRESP.
If input signal is periodic, you will get much better speed by using a non-parametric technique. But the results are going to be sensitive to choice of technique (H1 or H2), frame-size, window shape and amount of overlapping. Parametric methods are much slower but less sensitive to tuning parameters (such as model order) and are more reliable IMO. You also get the additional insights into system dynamics in terms of poles/zeros, damping, I/O delays and feedthrough.
If you have system identification toolbox, I would recommend the following:
• If data is transient (that is, the input is a step or impulse, or a pulse) and is not very long:
data = iddata(outputsignal, inputsignal, sampletime); %sampletime = 1/Fs
model = tfest(data, np); % np: number of poles
w = linspace(0,pi/sampletime,100); % an example frequency grid (you can pick something different)
G = freqresp(model,w); % or, simply do "bode(model)"
• If data has periodic inputs:
data = iddata(outputsignal, inputsignal, sampletime)
data2 = fft(data) % data in frequency domain
model = tfest(data2, np); % np: number of poles
w = linspace(0,pi/sampletime,100);
G = freqresp(model,w); % or, simply do "bode(model)"
If you have MIMO data, you could replace TFEST with SSEST (state-space estimator) and follow the steps similar to the above.
AC_GBX on 18 Aug 2020
Thank you that solved my problem.

### Categories

Find more on State-Space Models in Help Center and File Exchange

R2020a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!