Transfert function with System identification toolbox

1 次查看(过去 30 天)
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

回答(1 个)

Arkadiy Turevskiy
Arkadiy Turevskiy 2015-8-26
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.

类别

Help CenterFile Exchange 中查找有关 System Identification Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by