I came across a concept that says we can design LPH and HPF from APF when the transfer function of the two APFs given as

$$\begin{align}A_0(z)&=1\\ A_1(z)&=\frac{-a+z^{-1}}{1-az^{-1}}\\\\ H_{LP}(z)&=A_0(z)+A_1(z)\\ H_{HP}(z)&=A_0(z)-A_1(z)\end{align}$$

i tried to implement this in matlab but i did not get the desired frequency response..kindly help me with the matlab code for the same..

  • $\begingroup$ Your A1 formula is ambiguous. Please add more () to make clear what you divide by which (come on, this is basic "how to write down a formula"). $\endgroup$ – Marcus Müller Jan 16 '16 at 14:27
  • $\begingroup$ i didnt understand what is the ambiguity in A1..are you asking me the value for a?? $\endgroup$ – pavan sunder Jan 16 '16 at 18:13
  • $\begingroup$ With Gilles edit, it's now clear that you meant A1 = (-a+z^(-1))/(1-az^(-1)) with your formula, and not A1= -a + (z^(-1))/(1-az^(-1)), which obviously is something completely different! $\endgroup$ – Marcus Müller Jan 17 '16 at 10:15
  • $\begingroup$ but i did not get the desired frequency response: What did you get instead? Where's your Matlab code? Please make it easy to answer your question! $\endgroup$ – Marcus Müller Jan 17 '16 at 10:24
  • $\begingroup$ Does your title how to design LPH and HPF from APF really reflect your question well? I feel your question is about understanding and analyzing the resulting filter, not designing it. $\endgroup$ – Marcus Müller Jan 17 '16 at 10:54

Since you don't say what response you're actually getting from Matlab, this is all guesswork.

So let's do the basics: A little formula juggling.

$$\begin{align}A_0(z)&=1\\ A_1(z)&=\frac{-a+z^{-1}}{1-az^{-1}}\\[4em] H_{LP}(z)&=A_0(z)+A_1(z)\\ &= 1 + \frac{-a+z^{-1}}{1-az^{-1}}\\ &= \frac{{1-az^{-1}}-a+z^{-1}}{1-az^{-1}}\\ &= \frac{(1-a)\quad +\quad (1-a)z^{-1}}{1-az^{-1}}\\[4em] H_{HP}(z)&=A_0(z)-A_1(z)\\ &= 1 - \frac{-a+z^{-1}}{1-az^{-1}}\\ &= \frac{{1-az^{-1}}+a-z^{-1}}{1-az^{-1}}\\ &= \frac{(1+a)\quad +\quad (-1-a)z^{-1}}{1-az^{-1}} \end{align}$$

So, taken from these formulas, the filter coefficients for $H_{LP}$ are $b=[1-a,1-a]$, $a=[1,-a]$, and for $H_{HP}$ it's $b=[1+a,-1-a]$, $a=[1,-a]$ for the canonical form of recursive filters

$$H= \frac{\sum\limits_{i=0}^N b_i z^{-i}}{\sum\limits_{i=0}^M a_i z^{-i}}\text.$$

Plugging that into scipy's scipy.signal.freqz for different $a$ yielded (abscissa: normalized frequency $\in[0,\pi[$, ordinate: magnitude):

$H_{LP,a}$ for $a\in\{0,0.1,\dots,0.9,1\}$:


$H_{HP,a}$ for $ a\in\{0,0.1,\dots,0.9,1\}$:


which both very nicely match the terms low and high pass filters, respectively.

| improve this answer | |
  • $\begingroup$ what is that scipy.signal.freqz..i didnt find that function in matlab documentation.. $\endgroup$ – pavan sunder Jan 19 '16 at 14:40
  • $\begingroup$ unfortunately i am not able to copy the matlab code which i wrote..i have used the coefficients which you suggested but though i am getting the response. its not varying when i change the parameter a.. $\endgroup$ – pavan sunder Jan 19 '16 at 14:49
  • $\begingroup$ here is my mail id: pavansunder@gmail.com..Would you kindly send me the matlab code..thanks :) $\endgroup$ – pavan sunder Jan 19 '16 at 14:50
  • $\begingroup$ @pavansunder: why can't you share your Matlab code? This sounds like the lamest excuse to get someone else to do your homework ever. $\endgroup$ – Marcus Müller Jan 19 '16 at 16:32
  • $\begingroup$ i tried to copy and paste my matlab code....but was unable to do..can u share your mail id so that i ll send my code.. $\endgroup$ – pavan sunder Jan 19 '16 at 17:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.