1
\$\begingroup\$

I measure a network's transfer function using a network analyzer and therefore have a set of complex data points, representing the network's gain and phase. I wish to fit a continuous, rational transfer function to my measured data to create a model of my network. To find a discrete-time model, there is the "Frequency Domain Least Squares" algorithm:

http://robotics.itee.uq.edu.au/~elec3004/2014/lectures/Precise%20Filter%20Design%20(chapter).pdf

Several months ago, I found a PDF which presented a very similar method to estimate a continuous transfer function, but I don't remember where it is nor do I remember its name. I only remember that it was also a simple least squares algorithm as in the above link. Does someone have a hint for this?

Update: Meanwhile I was able to recover the paper I mentioned. It is called 'Practical Transfer Function Estimation and its Application to Wide Frequency Range Representation of Transformers'. In my application, I am not dealing with a transformer but with some other passive electrical network involving RLC components, and I try to fit a transfer function to that. The network analyzer gives me some complex data for logarithmically spaced frequencies. I tried to use the method presented in the paper, but since my frequencies range from several Hz to several 100 MHz, the algorithm is unable to converge because the matrix A involves \$\omega\$, \$\omega^2\$, \$\omega^3\$ and so on - which leads to an ill-conditioned equation system, and therefore it cannot be solved. I wonder whether there are better algorithms than this, or whether this algorithm could be used, though, perhaps with some pre-processing of my frequency data.

Link to the paper I mentioned: https://ieeexplore.ieee.org/document/252689

\$\endgroup\$
1
  • \$\begingroup\$ Have you tried normalizing the frequency? \$\endgroup\$
    – Sven B
    Feb 27, 2019 at 8:37

2 Answers 2

1
\$\begingroup\$

You'll be jumping down the rabbit hole of system identification and modelling. Generally speaking you will need two things:

The first is a so-called estimator (wiki), that you can use to find the best "fit" of a general rational transfer function. The ones I've encountered most are

  • Least-Squares Estimator
  • Maximum-Likelihood Estimator (wiki)

They work by defining a cost function that you try to minimize using the unknown tranfer function coefficients. For the least-squares estimator, the cost function is simply the sum of the squared errors.

The second one is a model selection criterion (wiki). In order to avoid modelling the noise of your data points, you can use this criterion to formally find the optimal model complexity (order of the system).

\$\endgroup\$
1
  • \$\begingroup\$ yes, I know we are talking about system identification here - and since I have already dealt a bit with this topic I know it is quite a rabbit hole :-) meanwhile I found the paper I was talking about - question updated. \$\endgroup\$
    – T. Pluess
    Feb 26, 2019 at 17:07
1
\$\begingroup\$

The goal of Matlab function invfreqs is to identify continuous-time filter parameters from frequency response data. The idea is based on Levi, E. C. “Complex-Curve Fitting.” IRE Trans. on Automatic Control. Vol. AC-4, 1959, pp. 37–44. The main problem is to adjust n and m parameters (the orders from numerator and denominator).

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.