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
댓글 수: 0
답변 (1개)
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Transfer Function Models에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!