In signal processing, a polyphase matrix is a matrix whose elements are filter masks. It represents a filter bank as it is used in sub-band coders alias discrete wavelet transforms.[1]
If
are two filters, then one level the traditional wavelet transform maps an input signal
to two output signals
, each of the half length:
![{\displaystyle {\begin{aligned}a_{1}&=(h\cdot a_{0})\downarrow 2\\d_{1}&=(g\cdot a_{0})\downarrow 2\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/784cb2c79654d85de67305745441a8bce5455347)
Note, that the dot means polynomial multiplication; i.e., convolution and
means downsampling.
If the above formula is implemented directly, you will compute values that are subsequently flushed by the down-sampling. You can avoid their computation by splitting the filters and the signal into even and odd indexed values before the wavelet transformation:
![{\displaystyle {\begin{aligned}h_{\mbox{e}}&=h\downarrow 2&a_{0,{\mbox{e}}}&=a_{0}\downarrow 2\\h_{\mbox{o}}&=(h\leftarrow 1)\downarrow 2&a_{0,{\mbox{o}}}&=(a_{0}\leftarrow 1)\downarrow 2\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/84985982636f164aaa08dd03366d9a794ad7e2a7)
The arrows
and
denote left and right shifting, respectively. They shall have the same precedence like convolution, because they are in fact convolutions with a shifted discrete delta impulse.
![{\displaystyle \delta =(\dots ,0,0,{\underset {0-{\mbox{th position}}}{1}},0,0,\dots )}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a3fb58d130a75bd825993cde3a6012b31ff17734)
The wavelet transformation reformulated to the split filters is:
![{\displaystyle {\begin{aligned}a_{1}&=h_{\mbox{e}}\cdot a_{0,{\mbox{e}}}+h_{\mbox{o}}\cdot a_{0,{\mbox{o}}}\rightarrow 1\\d_{1}&=g_{\mbox{e}}\cdot a_{0,{\mbox{e}}}+g_{\mbox{o}}\cdot a_{0,{\mbox{o}}}\rightarrow 1\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3d8601ad36001ffdccec9232f72de775441d6042)
This can be written as matrix-vector-multiplication
![{\displaystyle {\begin{aligned}P&={\begin{pmatrix}h_{\mbox{e}}&h_{\mbox{o}}\rightarrow 1\\g_{\mbox{e}}&g_{\mbox{o}}\rightarrow 1\end{pmatrix}}\\{\begin{pmatrix}a_{1}\\d_{1}\end{pmatrix}}&=P\cdot {\begin{pmatrix}a_{0,{\mbox{e}}}\\a_{0,{\mbox{o}}}\end{pmatrix}}\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4e19effd2f3af57d6d88605378d3ae227c1a7940)
This matrix
is the polyphase matrix.
Of course, a polyphase matrix can have any size, it need not to have square shape. That is, the principle scales well to any filterbanks, multiwavelets, wavelet transforms based on fractional refinements.