Zero-pole-gain complex bandpass frequency transformation

```
[Z2,P2,K2,AllpassNum,AllpassDen]
= zpkrateup(Z,P,K,N)
```

```
[Z2,P2,K2,AllpassNum,AllpassDen]
= zpkrateup(Z,P,K,N)
```

returns zeros, `Z`

_{2},
poles, `P`

_{2}, and gain factor, `K`

_{2},
of the target filter being transformed from any prototype by applying
an `N`

th-order rateup frequency transformation, where `N`

is
the upsample ratio. Transformation creates `N`

equal
replicas of the prototype filter frequency response.

It also returns the numerator, `AllpassNum`

,
and the denominator, `AllpassDen`

, of the allpass
mapping filter. The original lowpass filter is given with zeros, `Z`

,
poles, `P`

, and gain factor, `K`

.

Relative positions of other features of an original filter do
not change in the target filter. This means that it is possible to
select two features of an original filter, F_{1} and
F_{2}, with F_{1} preceding
F_{2}. Feature F_{1} will
still precede F_{2} after the transformation.
However, the distance between F_{1} and F_{2} will
not be the same before and after the transformation.

Design a prototype real IIR halfband filter using a standard elliptic approach:

[b, a] = ellip(3,0.1,30,0.409); z = roots(b); p = roots(a); k = b(1); % Upsample the prototype filter 4 times [z2,p2,k2] = zpkrateup(z, p, k, 4); % Compare prototype filter with target filter fvtool(b, a, k2*poly(z2), poly(p2));

Variable | Description |
---|---|

`Z` | Zeros of the prototype lowpass filter |

`P` | Poles of the prototype lowpass filter |

`K` | Gain factor of the prototype lowpass filter |

`N` | Integer upsampling ratio |

`Z2` | Zeros of the target filter |

`P2` | Poles of the target filter |

`K2` | Gain factor of the target filter |

`AllpassNum` | Numerator of the mapping filter |

`AllpassDen` | Denominator of the mapping filter |

Frequencies must be normalized to be between -1 and 1, with 1 corresponding to half the sample rate.

Was this topic helpful?