how can I have a perfect rect function as the result of applying fft on sinc function?
83 views (last 30 days)
Show older comments
I have to generate a perfect rectangle as the fft result of the sinc function. I am working with different parameters to achieve this, so far I could generate a good rectangle but it still has some imperfections. I want exactly a rectangle like what we have in theory. I attached my code and results to this message. Two problems that I have in this rect function:
1- spikes in the edges
2- gliteches along with the rect function
clear all;
Fs=2000; % sampling frequency
Ts=1/Fs; % sampling period
t=-1:Ts:1;
N=numel(t); % numel recommended instead of length
f=500;
cx=sinc(t*f);
cx(end-300:end)=0; cx(1:300)=0;
figure;
plot(t,cx);title("sinc function");
xlabel('time');
ylabel(' magnitude');
fy=(fft(cx));
Nyq = Fs/2; % Nyquist frequency is 1/2 of the sampling frequency
% dx = (t(end)-t(1))/(N-1); % Time increment, should rename to dt, but not used
% suggest not using colon with df stride, stick colon with unit stride
if mod(N,2) == 0 % N is even
k = ( (-N/2) : ((N-2)/2) )/N*Fs;
else % N is odd
k = ( (-(N-1)/2) : ((N-1)/2) )/N*Fs;
end
figure;
plot(k,fftshift(abs(fy*Ts)));title("rect function");
xlabel(' frequency t^{-1}');
ylabel(' magnitude');
xlim([-2000 2000])
0 Comments
Answers (1)
Matt J
on 27 Jun 2022
Edited: Matt J
on 28 Jun 2022
I want exactly a rectangle like what we have in theory.
The FFT of a sinc function is not a perfect rect, even in theory. The continuous Fourier Transform of a continuous and infinitely long sinc function is a perfect rect.
The only way you can get a perfect discretized rect as the output of the fft is to start with the ifft of a perfect rect.
4 Comments
Paul
on 1 Jul 2022
To be clear, I wasn't offerering a solution, If anything, I was illustrating that a solution doesn't exist.
In summary:
CT sinc -> CTFT -> rect
DT sinc -> DTFT -> periodic extension of rect
DT sinc -> DFT -> can't be done because DFT only applies for finite duration signals, and sinc is infinite duration
DF (discrete frequency) rect -> IDFT -> something close sinc*rect
See Also
Categories
Find more on Frequency Transformations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!