0

I need your assistance to answer a question about filter design in iradon. Actually, in line of sight projections (beam deflections), in contrary to the other techniques such as absorption, the ram lak filter is replaced by another one whose discrete response is :

discrete response

and in the frequency domain it is represented as :

frequency domain

Inspiring from iradon I implemented my filter as follow :

n = 0:(order/2);

filtImpResp = zeros(1,(order/2)+1); 

filtImpResp(1) = 0; % Set the DC term 

filtImpResp(2:2:end) = 1./(pi^2.*n(2:2:end));

filtImpResp = [filtImpResp -filtImpResp(end-1:-1:2)]; 

filt =imag(fft(filtImpResp))

% but it doesn't give a good results.

Could you please have a look at that? Is my implementation accurate? Especially I have a doubt in regards to this line in the original iradon function :

filt = 2*real(fft(filtImpResp)); 

Why is it multiplied by 2? What should I do in my case?

Many thanks in advance

Best regards

1 Answers1

1

First, I set order = 100;.

The frequency domain that you mentioned, I guess it is the phase angle response of the filter. You can retrieve it on MATLAB by:

plot(angle(fftshift(fft(filtImpResp))));

In the same manner, the magnitude response:

plot(abs(fftshift(fft(filtImpResp))));

The scalar 2 might be to normalize the magnitude of the filter, e.g. from 0 to 1, even though it is written real on the code.

rvimieiro
  • 1,043
  • 1
  • 10
  • 17