data to transfer function (idfrd) error

data = importdata ('C:\Users\sangwoo\Desktop\mash_change_500Hz_tf.mat');
freq = 1:1:500; % frequency range
w = freq*2*pi; %angle freq
frf = data; % FRF complex number
Fs = 500*2*32;
Ts = 1/Fs;
np = 10; %number of poles
nz = 10; %number of zeros
%% 1 iddata
gfr = idfrd(frf,w,Ts)
%% 2 system
sys = tfest(gfr,np,nz)
%% 3 num, den
num = sys.Numerator;
den = sys.Denominator;
%
% %% 4 continuous transfer function
%
G = tf([num],[den]);
figure(1)
bode(G)
figure(2)
semilogx(2*pi*freq,20*log10(abs(frf))) %compare
left is plot from data right is plot of G ; rad/s and magnitude at resonance is not matched
at tfest process, matlab tell accuracy is 99.7 percent. so i think gfr = tfest. but at idfrd process, some bad think happened. please give me some help to make accurate model

1 comentario

sangwoo ha
sangwoo ha el 2 de Jul. de 2021
sorry i have no idea about iddata i think gfr is perfect but something wrong in tfest

Iniciar sesión para comentar.

 Respuesta aceptada

Star Strider
Star Strider el 2 de Jul. de 2021

0 votos

If you want to see how well the data and identified system match, use the compare function.

Más respuestas (0)

Preguntada:

el 2 de Jul. de 2021

Comentada:

el 2 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by