Transfert function with System identification toolbox
1 view (last 30 days)
Show older comments
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
0 Comments
Answers (1)
Arkadiy Turevskiy
on 26 Aug 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.
0 Comments
See Also
Categories
Find more on Transfer Function Models in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!