How to get transfer function from a bode plot with my data?
이전 댓글 표시
Hello everybody,
I have saved the measurement data of a ground diagram and wanted to extract poles and zeros from this measurement data in Matlab. From these measurement data:
-Freq is the frequency
-cs corresponds to the amplitude in dB
-phis corresponds to the phase.
-CTF5 is the file name
I want the poles and zeros from my measurement data (CTF5.txt)
Get Matlab calculated.
What commands should I use to extract the poles and zeros from my measurement data?
I look forward to your help
Best wishes
Thierry Assop
that's my code and it doesn't work with the 'tfest' command:
load CTF5.txt;
Freq=CTF5(:,1);
cs=CTF5(:,2);
phis=CTF5(:,3);
PHA = phis; %phase of experimental result
AMP = cs; %gain of experimental result
W = Freq*2*pi; %transforming frequency in Hz to rad/s
Ts = 0;
gain=10.^(AMP/20);
zfr = gain.*exp(1i*PHA*pi/180);
gfr = frd(zfr,W,Ts);
sys=tfest(gfr,2);
[mag,ph]=bode(sys,w);
mag=squeeze(mag);
ph=squeeze(ph);
댓글 수: 1
Janagan Papperi Devarajulu Deenadayalan
2020년 11월 9일
Hello. I need some help on the same topic. The problem is that I have only the magnitude plot for my system. How can I derive the transfer function in this case? Please help me in this regard.
답변 (1개)
Star Strider
2020년 8월 3일
Add to your posted code:
sys=tfest(gfr,3);
since this gives a more accurate result, and then:
[poles,zeros] = pzmap(sys)
figure
compare(gfr,sys)
figure
pzmap(sys)
to get the plots and:
poles =
-1.3392e+03 + 6.4091e+03i
-1.3392e+03 - 6.4091e+03i
-7.6758e+02 - 2.1655e-06i
zeros =
-4.3503e+03 + 2.2001e+03i
-4.3503e+03 - 2.2001e+03i
Also, if you want to model it as a sampled (not continuous) system, and assuming the maximum frequency in the data is the Nyquist frequency, use:
Ts = 1/(2*max(Freq));
.
댓글 수: 4
Assopguimya Thierry
2020년 8월 4일
Star Strider
2020년 8월 4일
My pleasure!
Since you arre using tfest in your code, I assume that you have the System Identification Toolbox. (I have it, obviously.) If you do not have it, you need to download it and install it in order to identify your system.
I use the data in ‘CTF5.txt’ in my code, and used the code you posted to read it and assign the variables, since your code otherwise appears to be correct in calculating the frequencies, magnitude, and complex array that the frd or idfrd functions require. I simply did not post that part of my code because I used the code you posted, only posting my documented changes to it.
I have no idea what you intend by ‘new code’. I used the code you posted, with my additions. (I did not open the .m file, since I assumed that it contains the same code you posted.)
Assopguimya Thierry
2020년 8월 4일
Star Strider
2020년 8월 4일
My pleasure!
The code will work with the System Identification Toolbox.
카테고리
도움말 센터 및 File Exchange에서 Transfer Function Models에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!