Identify continuous-time filter parameters from frequency response data

`[b,a]`

` = `

invfreqs(h,w,n,m)

[b,a]` = `

invfreqs(h,w,n,m,wt)

[b,a]` = `

invfreqs(h,w,n,m,wt,iter)

[b,a]` = invfreqs(h,w,n,m,wt,iter,tol)`

[b,a]` = `

invfreqs(h,w,n,m,wt,iter,tol,'`trace`

')

[b,a]` = `

invfreqs(h,w,'`complex`

',n,m,...)

`invfreqs`

is the inverse operation of `freqs`

.
It finds a continuous-time transfer function that corresponds to a
given complex frequency response. From a laboratory analysis standpoint, `invfreqs`

is
useful in converting magnitude and phase data into transfer functions.

`[b,a]`

returns
the real numerator and denominator coefficient vectors ` = `

invfreqs(h,w,n,m)`b`

and `a`

of
the transfer function

$$H(s)=\frac{B(s)}{A(s)}=\frac{b(1){s}^{n}+b(2){s}^{n-1}+\cdots +b(n+1)}{a(1){s}^{m}+a(2){s}^{m-1}+\cdots +a(m+1)}$$

whose complex frequency response is given in vector `h`

at
the frequency points specified in vector `w`

. Scalars `n`

and `m `

specify
the desired orders of the numerator and denominator polynomials.

The length of `h`

must be the same as the length
of `w`

. `invfreqs`

uses `conj(h)`

at `-w`

to
ensure the proper frequency domain symmetry for a real filter.

`[b,a]`

weights
the fit-errors versus frequency, where ` = `

invfreqs(h,w,n,m,wt)`wt`

is a
vector of weighting factors the same length as `w`

.

`[b,a]`

and ` = `

invfreqs(h,w,n,m,wt,iter)

`[b,a]`

provide
a superior algorithm that guarantees stability of the resulting linear
system and searches for the best fit using a numerical, iterative
scheme. The ` = invfreqs(h,w,n,m,wt,iter,tol)`

`iter`

parameter tells `invfreqs`

to
end the iteration when the solution has converged, or after `iter`

iterations,
whichever comes first. `invfreqs`

defines convergence
as occurring when the norm of the (modified) gradient vector is less
than `tol`

, where `tol`

is an optional
parameter that defaults to 0.01. To obtain a weight vector of all
ones, use

invfreqs(h,w,n,m,[],iter,tol)

`[b,a]`

displays
a textual progress report of the iteration. ` = `

invfreqs(h,w,n,m,wt,iter,tol,'`trace`

')

`[b,a]`

creates
a complex filter. In this case no symmetry is enforced, and the frequency
is specified in radians between ` = `

invfreqs(h,w,'`complex`

',n,m,...)*–π* and *π*.

[1] Levi, E. C. "Complex-Curve Fitting." *IRE
Trans. on Automatic Control*. Vol. AC-4, 1959, pp. 37–44.

[2] Dennis, J. E., Jr., and R. B. Schnabel. *Numerical
Methods for Unconstrained Optimization and Nonlinear Equations.*Englewood
Cliffs, NJ: Prentice-Hall, 1983.

Was this topic helpful?