# Polyphase Decomposition in Matlab

I created the lowpass filter

h = firls(100, [0 .2 .25 1], [ 1 1 0 0],[.001 60]);


My goal is to get four filters $H_{k}(z) = H(W_{4}^{k}z) k =0,1,2,3$

From my knowledge to get the polyphase components you would do the following

$H_{0}(z) = \sum h(4n)z^{-n}$
$H_{1}(z) = \sum h(4n+1)z^{-n}$
$H_{2}(z) = \sum h(4n+2)z^{-n}$
$H_{3}(z) = \sum h(4n+3)z^{-n}$

To do this in matlab i just did\

 h0=h(1:4:end);
h1=h(2:4:end);
h2=h(3:4:end);
h3=h(4:4:end);


This doesn't seem to produce the right results.... If anyone can clarify how to do polyphase decomposition in mat lab or tell me what I am doing wrong I would appreciate it

EDIT:

I have a signal x[n] that is a FDM (frequency Division Multiplex) signal made up of four real valued baseband signals interpolated by a value of of 4 and modulated using the complex carrier $e^{j \frac{2*pi*k}{4}n}$ thefour base band signals are added to make the FDM signal x[n].

My goal is to estimate each of the 4 base band signals using the polyphase components of the lowpass filter. The matlab code I am using is:

h = firls(100, [0 ,2 ,.25 1], [ 1 1 0 0],[.001 60]);
h0=h(1:4:end);
h1=h(2:4:end);
h2=h(3:4:end);
h3=h(4:4:end);

%first baseband signal
y0 = conv(x,h0);
y0 = downsample(y0, 4);
y0 = abs(fft(y0));


Here are the 4 estimated baseband signals I get compared to the actual The polyphase components don't seem to be changing anything

I also tried setting up the filters like this

% Lowpass Filter
h0 = firls(100, [0 .2 .25 1], [1  1 0  0],[.001 60]);
h1 = firls(100, [0 .2 .25 1], [1  1 0  0],[.001 60]);
h2 = firls(100, [0 .2 .25 1], [1  1 0  0],[.001 60]);
h3 = firls(100, [0 .2 .25 1], [1  1 0  0],[.001 60]);
figure(1)
impz(h);
figure(2);
freqz(h);

% PolyPhase Componets
h0(2:4:end)=0;
h0(3:4:end)=0;
h0(4:4:end)=0;

h1(1:4:end)=0;
h1(3:4:end)=0;
h1(4:4:end)=0;

h2(1:4:end)=0;
h2(2:4:end)=0;
h2(4:4:end)=0;

h3(1:4:end)=0;
h3(2:4:end)=0;
h3(3:4:end)=0;


and ended up with these plots still seems to be something wrong

(NOTE: Orange is actual signals. Blue is my estimate.)

• You're doing it right. You should elaborate on what doesn't seem to be working, as you likely have messed up somewhere else. – Jason R Feb 8 '12 at 4:12
• @JasonR I updated the question. The magnitude spectrums of the signals y0....y4 are not correct. – richardnixonthethird Feb 8 '12 at 4:29
• y0...y3 sorry.. – richardnixonthethird Feb 8 '12 at 5:00
• I have no clue what you're actually trying to do. Polyphase filter decompositions are usually used as efficient ways to implement multirate filters (i.e. for decimation or interpolation). You can use the concepts for filterbank structures also, but all you're doing is filtering a signal signal by four phases of a single lowpass filter. – Jason R Feb 8 '12 at 14:19
• @JasonR Thanks for your input I finally figured it out – richardnixonthethird Feb 9 '12 at 22:23

It seems I was missing the concept all together.

The phrase $H_{k}(z)=H(W_{4}^kz) k= 0,1,2,3$ given the lowpass filter H(z) represents the following:

$$H(z) = h_{0} + h_{1}+h_{2}+h_{3}$$ $$H_{0}(z) = h_{0} + h_{1}e^{\frac{-j2\pi*0*1}{4}}+h_{2}e^{\frac{-j2\pi*0*2}{4}}+h_{3}e^{\frac{-j2\pi*0*3}{4}}$$ $$H_{1}(z) = h_{0} + h_{1}e^{\frac{-j2\pi*1*1}{4}}+h_{2}e^{\frac{-j2\pi*1*2}{4}}+h_{3}e^{\frac{-j2\pi*1*3}{4}}$$ $$H_{2}(z) = h_{0} + h_{1}e^{\frac{-j2\pi*2*1}{4}}+h_{2}e^{\frac{-j2\pi*2*2}{4}}+h_{3}e^{\frac{-j2\pi*2*3}{4}}$$ $$H_{3}(z) = h_{0} + h_{1}e^{\frac{-j2\pi*3*1}{4}}+h_{2}e^{\frac{-j2\pi*3*2}{4}}+h_{3}e^{\frac{-j2\pi*3*3}{4}}$$

$H_{0},H_{1},H_{2},H_{3}$ represent the polyphase components of filter $H(z)$

To get these componets in mat lab i used

% Lowpass Filter
N = 100;
h = firls(N, [0 .2 .25 1], [1  1 0  0],[.001 .0001]);

% PolyPhase Componets
for i=1:length(h),
h0(i)=h(i);
end

for i=1:length(h),
h1(i)=h(i)*exp((-j*2*pi*((i-1)))/4);
end

for i=1:length(h),
h2(i)=h(i)*exp((-j*2*pi*(2*(i-1)))/4);
end

for i=1:length(h),
h3(i)=h(i)*exp((-j*2*pi*(3*(i-1)))/4);
end


using these components I was able to get the right estimations • are you still there ? – Zeyad_Zeyad Jun 28 '18 at 1:24

@skipfer0712 Firstly, I owe you thanks as I am currently working with MDFT polyphase filters and found your query quite useful. Although you mentioned that you happened to solve the problem, I would like to add something.

The Hk(z) in your formula gives the complex modulated and time shifted versions of the low pass prototype filter H(z) and not the polyphase components. It is more common to use the symbol E or G to denote the polyphase decomposiotion of the prototype filters. I do not know your entire MATLAB code, but please recheck it. Your intital method should work. The equation you used to solve your decompositions are nothing but summation of M impulse responses of your k th filter branch, which would mean that you have a uniform filter bank but not one with polyphase decomposition.

PS: I have tried to not include formulas as I am relatively new to this site and as such lack the knowledge of using the proper syntax for exponents, sigmas and so on. I apologize for the confusing description.