constructing a 1D using ifft

10 views (last 30 days)
Azza Ahmed
Azza Ahmed on 19 Dec 2012
Hi there,
I get confused with all the website explaining how to construct an image from k-space using inverse fourier transform. I understand I need use abs(ifftshift(ifft(sig))) in order to produce a 2D image. Can someone please tell what I need to use in order to get a 1D image instead?
Best wishes
Azza Ahmed
Azza Ahmed on 20 Dec 2012
I guess you are right. But I found some people constructing a 2D using : abs(ifftshift(ifft(fftshift(sig)))) not abs(ifftshift(ifft2(sig))) and this where I am confused.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 19 Dec 2012
Edited: Matt J on 19 Dec 2012
As long as sig is 1D, you should be getting 1D output.
>> sig=1:5; %1D signal
>> abs(ifftshift(ifft(sig))) %1D output
ans =
0.5257 0.5257 0.8507 3.0000 0.8507

More Answers (1)

Image Analyst
Image Analyst on 19 Dec 2012
What is k-space? Do you mean "frequency space," or the "Fourier domain"? And your code will give a 1D "image" - it does not produce a 2D image. If you are dealing with 2D images, you would use the "2" version, such as fft2() and ifft2(). Why do you think you're getting a 2D image when you use those 1D functions like you showed? What does "whos" show for your output?
Image Analyst
Image Analyst on 20 Dec 2012
sig must have already been run through fftshift(). And you don't get a 2D image from that so you'd have to do it for every line and every column of your image - that essentially what fft2() does. Don't bother with that unnecessary complicated way of doing it, just use fft2 and make it easy.

Sign in to comment.


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!