Power complementary IIR filter


[bp,ap] = iirpowcomp(b,a)
[bp,ap] = iirpowcomp(b,a,c)


[bp,ap] = iirpowcomp(b,a) returns the coefficients of the power complementary IIR filter g(z) = bp(z)/ap(z) in vectors bp and ap, given the coefficients of the IIR filter h(z) = b(z)/a(z) in vectors b and a. b must be symmetric (Hermitian) or antisymmetric (antihermitian) and of the same length as a. The two power complementary filters satisfy the relation

|H(w)|2 + |G(w)|2 = 1.

[bp,ap] = iirpowcomp(b,a,c) where c is a complex scalar of unity magnitude, forces bp to satisfy the generalized hermitian property:

conj(bp(end:-1:1)) = c*bp.

When c is omitted, the function chooses c as follows:

  • When b is real, the function chooses c as 1 or -1, whichever yields bp as real.

  • When b is complex, c defaults to 1.

ap is always equal to a.


collapse all

fvtool(b,a,bp,ap,'MagnitudeDisplay','Magnitude squared');
legend('Original Filter','Power Complementary Version');

See Also


Introduced in R2011a