Transfert function with System identification toolbox

1 visualizzazione (ultimi 30 giorni)
Hello, First, I mesure a frequency response of a filter. The filter shown at this figure:
I attach a .mat file of the transfert function, the Amplitude, phase and frequency in rad/seconde. I tried a lot of time to identify parameters (Transfert Function) with the “System identification toolbox” with the GUI Ident. That never work. The model output is always very different. I also tried with the theoretical curve and that never work! However, I compute the theoretical transfert function with Matlab… What I did: Ident; Import data/frequence domaine data/Freq.Function(Amp/Phase)
Estimate/transfert function:
Thank

Risposte (1)

Arkadiy Turevskiy
Arkadiy Turevskiy il 26 Ago 2015
There are a few issues here.
1. Your data (Amp, Pha) does not agree with closed form transfer function at low frequencies, below 100 rad/s:
R=1682;
C=1.07*10^(-6)
L=46.5*10^(-3)
s=tf('s');
sys=(s^2*L*R*C+s*L+R)/(s^2*L*C+s*R*C);
[mag,ph]=bode(sys,Freq);
semilogx(Freq,20*log10(squeeze(mag)))
semilogx(Freq,20*log10(Amp),'r')
legend('closed form transfer function','data');
2. When import your data into System Identification App, you specify Ts of 0.001. This effectively cuts off your data at 1,000Hz*2*pi=3,142 rad/sec. But if you look at your Freq, it goes to 10 times higher frequency.
3. So to get good results you need to do this: import the data like you do, but specify Ts=1e-4. Then preprocess the data and select to keep the data from 100Hz and up. Now move the resulting dataset to MATLAB workspace. Assume it is called mydataf. Now do this:
mydataf.Ts = 0; % change sampling time to zero, you cannot do it in the app due to a bug
model = tfest(mydataf,2,2)
compare(mydataf, model)
Hope this helps.

Categorie

Scopri di più su System Identification Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by