Help Me Solve FFT Sinc Function Problem

  • Thread starter Thread starter Jmas
  • Start date Start date
  • Tags Tags
    Fft Function
AI Thread Summary
The discussion revolves around a physics engineering student's implementation of the Fast Fourier Transform (FFT) in MATLAB, specifically aiming to plot a sinc function derived from a square function. The student encounters issues with the FFT output, which resembles a sinc function but is misaligned. Key points include the need for clarification on the two-dimensional FFT, as the original code uses the one-dimensional FFT function, which is not suitable for 2D data. Participants suggest using the fft2 function for proper two-dimensional Fourier transformation. Additionally, there is a discussion about ensuring the output matrix Z matches the dimensions of matrices X and Y, and a suggestion to center the FFT output by rotating the rows and columns. The conversation emphasizes understanding the correct application of FFT in MATLAB for accurate representation of the sinc function.
Jmas
Messages
5
Reaction score
0
Hello, I am a physics engineering student and i need a little help with fft function. I wrote the following code everything works, but when i get the fft. I was supose to obtain a sinc function and if you take a close look, it is a sinc, but in the wrong points, can anyone help me with this?

if you don't know/remember what a sinc function looks like:
https://www.google.pt/search?q=3d+s...%2Fwiki%2FFile%3AMatlab_surf_sinc.svg;561;420

x0=0;
y0=0;
dx=5;
dy=5;
px=0.05;
py=0.05;
dxx=1;
dyy=1;
n=dx/px+1;
m=dy/py+1;

xx=-dx/2:px:dx/2;
yy=-dy/2:py:dy/2;

[X,Y]=meshgrid(xx,yy);

Z=zeros(n,m);

%w=X.^2+Y.^2;

for i=1:n
for j=1:m
if X(i,j)>=x0-dxx/2 && X(i,j)<=x0+dxx/2 && Y(i,j)>=y0-dyy/2 && Y(i,j)<=y0+dyy/2
Z(i,j)=1;
end
end
end

A=fft(Z);
B=A.*conj(A);

figure(1)
surf(X,Y,Z)
colormap jet
colorbar

figure(2)
surf(X,Y,B)
colormap jet
colorbarAlso, how i make sure that Z, has always the size of the matrixs X and Y?
 
Physics news on Phys.org
It would help if you explained what your code is supposed to be doing.
 
it is suppose to plot the fft of a square function which is the sinc function. if you take a look a the photo I've just uploaded, the second one should be a sinc function.
 

Attachments

  • Sem Título.png
    Sem Título.png
    25.2 KB · Views: 492
I don't understand the second plot. You're doing a two-dimensional FFT, right? Why do you have a one-dimensional power spectrum?
 
its 2d too...
 
Really? I don't see depth in the second plot, unlike the first one.
 
and now?
 

Attachments

  • Sem Título.png
    Sem Título.png
    55 KB · Views: 468
I'm assuming this is MATLAB code. According to the documentation, the routine fft doesn't do a two-dimensional DFT. It only acts on the first non-singleton dimension.

EDIT: It looks like the function you want is fft2.
 
humm ok, and how do i center it?
 
  • #10
Probably easiest just to rotate the rows and columns by 50 positions.
 

Similar threads

Replies
13
Views
2K
Replies
4
Views
1K
Replies
16
Views
14K
Replies
18
Views
4K
Replies
3
Views
8K
Replies
1
Views
2K
Back
Top