Member of the modeling and prediction class.
[b, a] = invfreqz(h, w, nb, na)
[b, a] = invfreqz(h, w, nb, na, wf)
[b, a] = invfreqz(h, w, nb, na, wf, maxiter)
[b, a] = invfreqz(h, w, nb, na, wf, maxiter, tol)
[b, a] = invfreqz(h, w, nb, na, wf, maxiter, tol, 'trace')
[b, a] = invfreqz(h, w, 'complex', nb, na)
[b, a] = invfreqz(h, w, 'complex', nb, na, wf)
[b, a] = invfreqz(h, w, 'complex', nb, na, wf, maxiter)
[b, a] = invfreqz(h, w, 'complex', nb, na, wf, maxiter, tol)
[b, a] = invfreqz(h, w, 'complex', nb, na, wf, maxiter, tol, 'trace')
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.
| Name | Description |
| h | Specifies the desired complex frequency response. |
| w | Specifies the normalized frequency points in radians/sample. If you do not specify 'complex', invfreqz computes a filter with real coefficients. All elements of w must fall in the range [0, pi]. length(w) must equal length(h). |
| 'complex' | Computes a filter with complex coefficients. |
| nb | Specifies the order of the numerator. |
| na | Specifies the order of the denominator. |
| wf | Specifies the weight at each frequency point. wf can be an empty array or an array of the same length as h. All elements of wf must be larger than 0. The default is ones(1, length(h)). length(wf) must equal length(w). |
| maxiter | Specifies the maximum number of iterations in the Gauss-Newton method. The default is 30. |
| tol | Specifies the tolerance of the norm of gradient. The default is 0.01. |
| 'trace' | Generates a textual progress report of each iteration. |
| Name | Description |
| b | Returns the numerator coefficients. |
| a | Returns the denominator coefficients. The first element of a is 1. |
w = 0:0.1:pi;
l = length(w);
g = ones(1, l);
g(1:l/2) = 0;
na = 2;
nb = 2;
wf = ones(1, l);
maxiter = 20;
tol = 1e-5;
[b, a] = invfreqz(g, w, nb, na, wf, maxiter, tol)