Frequency domain filtering in Matlab

Tags:
1. Apr 22, 2017

roam

I am trying to implement several filters in Matlab for Fourier domain filtering. They are the cosine, Shepp-Logan, and Hann/Hamming window filters. These filters are defined as multiplying the ramp filter by the cosine function, sinc function, and Hann/Hamming windows respectively.

This is how the responses of these filters should look like:

However, this is what I am getting:

I have defined the filters exactly as they are defined in this Matlab function, with a parameter $d$ that stretches the filters:

Code (Text):
w=linspace(0, 1, 181).'; % Frequency axis

d=0.33;

Hr = abs(w); % Ramp filter

H=Hr.* cos(w/(d)); % Cosine filter
H(H<0) = 0;

H=Hr.* (sin(w/d)./(w/d)); % Shepp-Logan filter
H(H<0) = 0;

H=Hr.* (1+cos(w./d)) / 2; % Hann filter
H(H<0) = 0;

H=Hr.* (.54 + .46 * cos(w/d)); % Hamming filter
H(H<0) = 0;
For instance, if I change it to $d=0.3$, the Hann/Hamming filters start to look correct. And at $d=0.65$, the cosine filter looks more correct:

So, what is the justification for using the parameter $d$? And is there an algorithm for calculating it accurately for each filter?

Any explanation would be greatly appreciated.

2. Apr 27, 2017

PF_Help_Bot

Thanks for the thread! This is an automated courtesy bump. Sorry you aren't generating responses at the moment. Do you have any further information, come to any new conclusions or is it possible to reword the post? The more details the better.

3. Apr 28, 2017

PhysicoRaj

What do you get for d=1? I am guessing it might have to do with normalization?

4. Apr 28, 2017

FactChecker

The second plot above is d=1. I suspect there is a degree/radian/frequency units issue.

5. Apr 29, 2017

roam

I tried to plot the graphs without the $d$ but instead using some kind of normalization. This is the combination that produced the correct results:

$$H=|\omega| \cos \left( \frac{\omega}{2 \pi} \right)$$

$$H=|\omega| \left( \frac{\sin \left( \frac{\omega}{2 \pi} \right)}{\left( \frac{\omega}{2 \pi} \right)} \right)$$

$$H = |\omega| \frac{1+\cos(\omega \pi)}{2}$$

$$H = |\omega| (0.54 + 0.46 \cos (\omega \pi))$$

Is there any reason why we need to divide the frequency in the first two by $2 \pi$, but multiply it by $\pi$ in the Hann and Hamming window?

It was a trial and error approach, so I am not sure.