Estimate poles/zeros given a transfer function

조회 수: 6 (최근 30일)
Daniel H
Daniel H 2015년 9월 15일
댓글: Star Strider 2015년 9월 15일
Hi,
Giving a transfer function (vector of frequencies and values) - is it possible to obtain poles and zeros?
From a circuit simulator I get exported data as CSV with first column frequency, second real part and third imaginary.
I tried using the system identification toolbox:
data = csvread('export.matlab',1);
f = data(:,1);
H = data(:,2) + 1i*data(:,3);
fdata = iddata(H, ones(size(H)), 0, 'Frequency', 2*pi*f);
sys = tfest(fdata, 2, 1);
He = bode(sys, 2*pi*f);
semilogx(f, 20*log10(abs([ H , squeeze(He) ])));
legend('act','estimate');
However, this is the result:
Changing nr. of poles/zeros changes results significantly but none comes to the actual curve even close.
Am I doing something wrong?

답변 (1개)

Star Strider
Star Strider 2015년 9월 15일
편집: Star Strider 2015년 9월 15일
I may not completely understand your Question.
It’s been a while since I used the System Identification Toolbox, but you probably need to ask tfest to estimate a higher-order system, unless you know that it only has two poles and one zero.
The poles of the system are the roots of the denominator (‘sys.den’) of the transfer function, and the zeros are the roots of the numerator (‘sys.num’).
  댓글 수: 2
Daniel H
Daniel H 2015년 9월 15일
As mentioned I tried all kinds of zero/pole numbers but all results are just purely wrong.
This is the output of a simple circuit simulation, not even complex-valued poles/zeros. So I must be doing something wrong.
Maybe there is also a better method in estimating poles/zeros from transfer function data?
Star Strider
Star Strider 2015년 9월 15일
You’re telling iddata that the sample time (Ts) is zero, meaning that it is continuously sampled. (I doubt any ADC is that fast!) That could be confusing it.
In my experience (and in the documentation), the data supplied to iddata is in the time domain. What is ‘data(:,1)’? Is it time or frequency?
What do you know about the circuit you’re simulating?
Are you certain that the output is complex? All the real-world output I’ve seen is real. What exactly are the outputs?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Transfer Function Models에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by