Estimating a second order transfer function for a over damped second order system.
98 ビュー (過去 30 日間)
古いコメントを表示
I have been tasked with estimating a second order transfer function for a set of data given that has been given to me. The form of this transfer function is;
G(S) = (k * w^2) / (s^2 + 2Cws + w^2)
where k is the steady state gain, w is the undamped natural frequency and C is the dampening ratio.
I have previously used the tfest function to estimate a first order transfer function which seems to be correct, but I am unsure how to create the second order transfer function in the overdamped shape that I need.
Im not looking for the complete answer as I still want to solve the problem myself, but if anybody could suggest some points where I may be going wrong that would be appreciated.
1 件のコメント
Mathieu NOE
2020 年 11 月 23 日
hello
so If you were successfull on a first order system, what blocks you for a second order system ?
in my 2020b release the function for transfer estimate is : tfestimate
have you time domain data and already computed the complex transfer function Txy = tfestimate(X,Y) ?
all the best
回答 (3 件)
Nagasai Bharat
2020 年 11 月 25 日
Hi,
In order to do an estimate of a second order transfer function the tfest function can be used with suitable arguments of np,nz (number of poles and zeros in the transfer funcition) along with the data you have.
PS: tfestimate is a function in the signal processing toolbox which does the similar tasks as tfest in the system identification toolbox
3 件のコメント
Mathieu NOE
2020 年 11 月 29 日
well
could you share your data and your code and explain why you expect to identify an overdamped system ?
Paul
2020 年 11 月 29 日
I haven't yet tried this myself, but in the System Identification Toolbox idproc looks like it will allow you to specify a second order model with two real poles and procest is the function to estimate the model parameters
doc idproc
doc procest
0 件のコメント
Mathieu NOE
2020 年 11 月 30 日
so this is the poor's man (no ID toolbox ) , frequency domain ID
it may help you
all the best
clc,close,clear;
File1 = fopen('Set9_1.txt');
Set9_1 = fscanf(File1,'%f',200);
dt = 1;
T = 1:dt:200;
step_resp = Set9_1;
% Actuator_Exp = plot(T,step_resp,'r');
% convert to impulse response = time derivative of step response
imp_resp = [diff(step_resp)./dt; 0];
% frequency response function (impulse response = FIR filter)
Fs = 1/dt;
freq = logspace(-3,log10(Fs/3),100);
b = imp_resp';
a = [1 zeros(1,length(imp_resp)-1)];
[g,p] = dbode(b,a,dt,2*pi*freq);
p = p-p(1); % phase must start at zero
% from there we can compute all transfer function parameters
static_gain = g(1);
% at cut off frequency (fc) : transfer function phase is - 90°
fc = interp1(p,freq,-90); % fc = 0.0555 Hz
wc = 2*pi*fc;
% search for the Q factor : Q is the amplitude of the normalized (modulus = 1 at f = 0 Hz)
% transfer function at f = fc
mod_at_fc = interp1(freq,g,fc);
Q = mod_at_fc/(static_gain); % Q = 0.61
% let's compare the model frequency response function with the identified model
num = [0 0 static_gain];
den = [1/wc^2 1/(wc*Q) 1];
[g_id,p_id] = bode(num,den,2*pi*freq);
figure(2),
subplot(2,1,1),loglog(freq,g,'b',freq,g_id,'r');grid
title('Sys TF');
ylabel('magnitude')
legend('measure','model')
subplot(2,1,2),semilogx(freq,p,'b',freq,p_id,'r');grid
ylabel('phase (°)')
xlabel('Frequency (Hz)')
legend('measure','model')
axis([min(freq) max(freq) -360 0]);
% step response of identified model
sr_id = step(num,den,T);
figure(3),
plot(T,step_resp,'b',T,sr_id,'r');grid
title('Sys step response');
legend('measure','model')
参考
カテゴリ
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!