DSP Algorithms for RF Systems

Trending

Buy the Book!

DSP for Beginners: Simple Explanations for Complex Numbers! The second edition includes a new chapter on complex sinusoids.

Designing an FIR High Pass Filter with Remez
September 23, 2021

Table of Contents

Introduction

While low-pass filtering (LPF) is ubiquitous high pass filters (HPF) can be needed depending on the RF environment or for specific algorithms. The previous post FIR Low Pass Filter Design with Remez demonstrated how to use the remez() function in the SciPy package to design LPF filter weights. The following blog will demonstrate how to use remez() to design a high pass filter as well as designing LPF filters and upconverting them.

Additional examples for Remez filter design can be found in the SciPy documentation under “Examples”.

More blog posts on filter design:

Design a High Pass Filter with Remez

A HPF can be designed directly with remez() using the following code:

import scipy.signal
filterLength = 21
cutoff = 0.375
transBand = 0.1
fPass = cutoff - (transBand/2)
fStop = cutoff + (transBand/2)
freqVec = [0, fPass, fStop, 0.5]
ampVec = [0, 1]
HPFRemez = scipy.signal.remez(filterLength,freqVec,ampVec)

The design is similar to that of the LPF discussed in this blog post with the differences being in the cutoff frequency and amplitude vector.

The HPF parameters passed into the remez() function are given in Figure 1, the resulting frequency response in Figure 2 and the magnitude in dB in Figure 3.

Figure 1: The parameters for remez() for designing an example HPF.
Figure 2: The magnitude of the HPF frequency response.
Figure 2: The magnitude of the HPF frequency response.
Figure 3: The HPF frequency response in dB.
Figure 3: The HPF frequency response in dB.

Upconvert Low Pass Filter to High Pass Filter

An alternative to designing a HPF directly is to design an LPF and then upconvert the filter weights by multiplication with a sinusoid,

(1)   \begin{equation*}h_{HPF}[n] = h_{LPF}[n] \cdot cos(\phi n).\end{equation*}

To make the LPF into a HPF it must be upconverted with a center frequency of f_s/2, or in radians \phi = \pi, therefore

(2)   \begin{equation*}cos(\pi n) = (-1)^n,\end{equation*}

(3)   \begin{equation*}h_{HPF}[n] = h_{LPF}[n] \cdot (-1)^n.\end{equation*}

Figure 4 gives the impulse response for an LPF and the upconverted HPF.

Figure 4: The impulse responses of the LPF and HPF filters.
Figure 4: The impulse responses of the LPF and HPF filters.

Frequency Domain Analysis of LPF Upconversion to HPF

The discrete-time Fourier transform of (1) is the frequency-domain convolution of the filter weights h_{LPF}[n] and \cos(\phi n),

(4)   \begin{equation*}\begin{split}H_{HPF}\left(e^{j\omega}\right) & = \mathcal{F} \{ h_{LPF}[n] \cdot cos(\phi n) \} \\& = \mathcal{F} \{ h_{LFP}[n]] \} \ast \mathcal{F} \{ cos(\phi n) \}, \\& = H_{LPF}\left(e^{j\omega}\right) \ast \mathcal{F} \{ cos(\phi n) \},\end{split}\end{equation*}

where \ast is convolution. From (2), conveniently

(5)   \begin{equation*}cos(\pi n) = (-1)^n = e^{j\pi n}.\end{equation*}

The discrete-time Fourier transform of a sequence h[n] multiplied by a complex exponential is [oppenheim1999, p.59]

(6)   \begin{equation*}\mathcal{F} \{ h[n] \cdot e^{j\phi n} \} = H\left( e^{j(\omega - \phi)} \right).\end{equation*}

Substituting \phi = \pi, the Fourier transform (4) can then be written

(7)   \begin{equation*}H_{HPF}\left(e^{j\omega}\right) = H_{LPF}\left(e^{j(\omega-\pi)}\right).\end{equation*}

which is the low-pass filter response frequency shifted to f_s/2 or \pi radians. Figure 5 gives the magnitude of the frequency response in (7) and Figure 6 shows the Remez-designed HPF magnitude frequency response is identical to that of the upconverted HPF.

Figure 5: The magnitudes of the frequency responses for the LPF and upconverted HPF filters.
Figure 5: The magnitudes of the frequency responses for the LPF and upconverted HPF filters.
Figure 6: The magnitudes of the frequency responses for the Remez-designed HPF and upconverted HPF are identical.
Figure 6: The magnitudes of the frequency responses for the Remez-designed HPF and upconverted HPF are identical.

Conclusion

A HPF can be designed directly using the remez() function by passing in the appropriate frequency vector and amplitude vector. Alternatively an LPF can be designed and then upconverted to become a HPF through with

(8)   \begin{equation*}h_{HFP}[n] = h_{LPF}[n] \cdot cos(\pi n) = h_{LPF}[n] \cdot (-1)^n.\end{equation*}

Have you seen these blogs on filter design?

Leave a Reply

For everything there is a season, and a time for every matter under heaven. A time to cast away stones, and a time to gather stones together. A time to embrace, and a time to refrain from embracing. Ecclesiastes 3:1,5
The earth was without form and void, and darkness was over the face of the deep. And the Spirit of God was hovering over the face of the waters. Genesis 1:2
Behold, I am toward God as you are; I too was pinched off from a piece of clay. Job 33:6
Enter His gates with thanksgiving, and His courts with praise! Give thanks to Him; bless His name! Psalm 100:4
Lift up your hands to the holy place and bless the Lord! Psalm 134:2
Blessed is the man who trusts in the Lord, whose trust is the Lord. He is like a tree planted by water, that sends out its roots by the stream, and does not fear when heat comes, for its leaves remain green, and is not anxious in the year of drought, for it does not cease to bear fruit. Jeremiah 17:7-8
He said to him, “You shall love the Lord your God with all your heart and with all your soul and with all your mind. This is the great and first commandment. And a second is like it: You shall love your neighbor as yourself. On these two commandments depend all the Law and the Prophets.” Matthew 22:37-39
Then He said to me, “Prophesy over these bones, and say to them, O dry bones, hear the word of the Lord. Thus says the Lord God to these bones: Behold, I will cause breath to enter you, and you shall live." Ezekiel 37:4-5
Riches do not profit in the day of wrath, but righteousness delivers from death. Proverbs 11:4
The angel of the Lord appeared to him in a flame of fire out of the midst of a bush. He looked, and behold, the bush was burning, yet it was not consumed. And Moses said, “I will turn aside to see this great sight, why the bush is not burned.” When the Lord saw that he turned aside to see, God called to him out of the bush, “Moses, Moses!” And he said, “Here I am.” Exodus 3:2-3
Daniel answered and said: “Blessed be the name of God forever and ever, to whom belong wisdom and might. He changes times and seasons; He removes kings and sets up kings; He gives wisdom to the wise and knowledge to those who have understanding." Daniel 2:20-21
Now the Lord is the Spirit, and where the Spirit of the Lord is, there is freedom. 2 Corinthians 3:17
Previous slide
Next slide

This website participates in the Amazon Associates program. As an Amazon Associate I earn from qualifying purchases.

© 2021-2024 Wave Walker DSP