How to fit a double-mass-vibration transfer function based on measured FRF (stored as idfrd value)?

9 views (last 30 days)
I measured the frequency response matrix of a machine (0 - 200 Hz, with 0.5 Hz frequency resolution) exported as arrays of complex numbers in the 3x3 cell matrix "FRFComplex". These are converted into idfrd objects in cell matrix SYSFR.
I want to approximate the measured frequency response functions to double-mass-vibrator transfer functions. I tried tfest and specified 4 polar points as the transfer function should have two pairs of poles (two peaks). But the tfest command won't work.
for IterationF=1:1:3
for IterationX=1:1:3
% Code to convert measured FRF from complex number array to idfrd object. This part works
CurrentFRFComplex=FRFComplex{IterationF,IterationX};
CurrentFreq=Freq{IterationF,IterationX};
for i=1:1:IgnoreFromArray
CurrentFRFComplex(i)=CurrentFRFComplex(IgnoreFromArray);
end
SYSFR{IterationF,IterationX}=idfrd(CurrentFRFComplex,CurrentFreq.*pi*2,2);
figure(IterationX+3*(IterationF-1));
bodeplot(SYSFR{IterationF,IterationX},BodePlotOpt);
% the following command does not work: error "Index exceeds the number of array elements. Index must not exceed 0."
SYSD{IterationF,IterationX}=tfest(SYSFR{IterationF,IterationX},4);
end
end
How should I correct the parameter for tfest to let the estimation work?

Answers (1)

Paras Gupta
Paras Gupta on 24 Jan 2024
Hello,
I understand that you get an error when you try to use 'tfest' function to estimate the transfer function for your model. Upon reproducting the issue, the following warning also occured when the provided code was run:
'Warning: Frequency points above the Nyquist frequency have been removed from the data.'
The Nyquist frequency is the minimum rate at which a signal can be sampled without introducing errors. The Nyquist frequency of a sampler can be calculated as twice the highest frequency present in the signal. The error occurs because of the sample time 'Ts' of the current discrete model being very high (2 in the provided code) which needs to be adjusted accordingly taking the Nyquist frequency into consideration.
Since the frequencies range between 0Hz and 200Hz, you need to sample your data at least every 1/400 seconds to avoid sampling errors. The value of 'Ts' can be updated to make the estimation work.
Please refer to the following documentation on 'tfest' function for more information:
Hope this helps with your query.

Community Treasure Hunt

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

Start Hunting!