>banton wrote:
>
>> [b,a] = invfreqz(h,w,nb,na)
>> "Computes a digital filter where the least squared fits to the
>> frequency response data. If you do not specify maxiter, tol, and
>> 'trace', invfreqz computes the filter that minimizes
>> sum|b-h*a|^2*wf. Otherwise, invfreqz uses the Gauss-Newton
>> method to compute the filter that minimizes sum|b/a-h|^2*wf."
>>
>> Intuitively, I would think that one could also modify the poles
>> and zeros of the transfer function given in factored form, in
>> order to minimize sum|q/p-h|^2 using q/p (pole-zero form of
>> the polynomial).(?)
>
>While you can parametrize the filter any way you want, using
>polynomial coefficients gives the tamest objective function. The
>linear dependence on numerator coefficients has a part in that and
>can also be exploited by specialized algorithms, and the problem is
>easily linearized as your quotation mentions. By contrast, all
>factored-form parameters enter through products which may slow
>convergence and creates more local minima to get stuck in.
Ok, I understand. So maybe I should stick to the idea of
finding the coefficients first and use root finding on the
numerator and denominator polynomials to get to the poles and
zeros.
>That said, both filter formulations have been tried in optimization;
>see references following eq. 5.2 in [1]. Regarding the workings of
>invfreqz, information on both linear least-squares and Gauss-Newton
>is abundant on the web.
>
>[1] Lang, Algorithms for the constrained design of digital filters
>with arbitrary mangnitude and phase responses
>http://www.nt.tuwien.ac.at/fileadmin/users/gerhard/diss_Lang.pdf
Thank you. This link is great. The section about iirs seems to
be what I was looking for. I'm reading...
Bjoern
>
>Martin
>
>--
>Quidquid latine scriptum est, altum videtur.
>
Reply by Martin Eisenberg●December 18, 20082008-12-18
banton wrote:
> [b,a] = invfreqz(h,w,nb,na)
> "Computes a digital filter where the least squared fits to the
> frequency response data. If you do not specify maxiter, tol, and
> 'trace', invfreqz computes the filter that minimizes
> sum|b-h*a|^2*wf. Otherwise, invfreqz uses the Gauss-Newton
> method to compute the filter that minimizes sum|b/a-h|^2*wf."
>
> Intuitively, I would think that one could also modify the poles
> and zeros of the transfer function given in factored form, in
> order to minimize sum|q/p-h|^2 using q/p (pole-zero form of
> the polynomial).(?)
While you can parametrize the filter any way you want, using
polynomial coefficients gives the tamest objective function. The
linear dependence on numerator coefficients has a part in that and
can also be exploited by specialized algorithms, and the problem is
easily linearized as your quotation mentions. By contrast, all
factored-form parameters enter through products which may slow
convergence and creates more local minima to get stuck in.
That said, both filter formulations have been tried in optimization;
see references following eq. 5.2 in [1]. Regarding the workings of
invfreqz, information on both linear least-squares and Gauss-Newton
is abundant on the web.
[1] Lang, Algorithms for the constrained design of digital filters
with arbitrary mangnitude and phase responses
http://www.nt.tuwien.ac.at/fileadmin/users/gerhard/diss_Lang.pdf
Martin
--
Quidquid latine scriptum est, altum videtur.
Reply by banton●December 18, 20082008-12-18
Hello,
I would like to write (or find) a modified version of "invfreqz" that
gives poles and zeros instead of coefficients. Of course I could first
compute the coefficients and then convert to poles and zeros by
root-finding, but I wonder if this isn't an unecessary detour.
Can anybody point me to documents that give me some insight into
the underlying mechanism applied by "invfreqz". Of course I
can read the code of the function, but it would help to have
some additional mathematical documentation in order to understand
how (and why) the code works.
The help text goes like this:
[b,a] = invfreqz(h,w,nb,na)
"Computes a digital filter where the least squared fits to the frequency
response data. If you do not specify maxiter, tol, and 'trace', invfreqz
computes the filter that minimizes sum|b-h*a|^2*wf. Otherwise, invfreqz
uses the Gauss-Newton method to compute the filter that minimizes
sum|b/a-h|^2*wf."
Intuitively, I would think that one could also modify the poles
and zeros of the transfer function given in factored form, in
order to minimize sum|q/p-h|^2 using q/p (pole-zero form of
the polynomial).(?)
Additionaly, if anybody could explain me, how this relates to
the prony-method and yule-walker eq., it would be of help as well.
My understanding is that prony and yulewalker calculate the best
fit to the time-domain impulse-response. I am exclusively interested
in the best approximation to the magnitudes of the freq-response.
That is why I chose to find out how invfreqz works, instead of digging
into prony's method or yulewalker.
thanks,
Bjoern