# Spatial Frequency Transform by doing FFT twice ?

1. Dec 4, 2011

### exidez

Spatial Frequency Transform by doing FFT twice ??

This is for my own knowledge in relations to acoustics. Im trying to determine the location of sound using an array of sensors. Very similar to what they are doing in the webpage given.

Im looking at the material at http://cnx.org/content/m12557/latest/?collection=col10255/latest and I am having a hard time understanding how they got to spatial domain by just doing FFT of the time domain signal, then obtaining the frequency they need and then doing an FFT again on that data. How does this work out ?? the "Mentally Visualizing the Spatial Frequency Transform" example doesnt make sense because there are no supporting facts to why it is like that. Can someone direct to some material that explains this easily?

The page here http://cnx.org/content/m12562/latest/?collection=col10255/latest says They look at frequency content of the received signals( First FFT) then obtain the frequency component from each received signal that corresponds to a desired frequency and concatenating them into an array.

What does it mean by "frequency component". Does it mean the complex number for that desired frequency ? This will mean you just one one value in the array!

It then says "We then zero pad that array to a length that is a power of two in order to make the Fast Fourier Transform (FFT) computationally efficient. Once we have assembled our zero padded array of components fo, we can perform the spatial DFT:"

So they did another FFT on the complex number which had been zero pad and this gives spatial domain ? Im completely lost

It must be right becuase i looked at a matlab script that does something similar:

ThisVolts = Volts(IStart:IEnd, :);

%Transform to the frequency domain and keep the first half
Temp1 = fft(ThisVolts);
ThisSpec = Temp1(1:NFreq, :);

%Now do a spatial Fourier transform to get wavenumber spectrum
Temp = fft(ThisSpec.');
Temp = [Temp(NEl/2+2:end, :); Temp(1:NEl/2+1, :)]; %Move to get zero wavenumber in the right place

I am so confused. Any help please?

2. Dec 4, 2011

### marcusl

Re: Spatial Frequency Transform by doing FFT twice ??

You are confusing time and spatial domains. Your links describe the 2D spatial domain only. The first transform is applied to one axis (say the x, across columns of the data matrix), then a second to the other axis (y, across rows of the data matrix that is output from the first transform).

$$S(k_x,k_y) = \mathfrak{F}_y \{ \mathfrak{F}_x \{s(x,y) \}\}$$
The order of transforms doesn't matter, however.

The spatial frequency is usually written k_x, which is also called wavenumber. It is an angular frequency, that is, 2π/l where l is the period (length) of the wave in question, with units of radians/meter. (It's analogous to angular frequency of a time-domain signal ω=2π/p where p is period in seconds and frequency units are radians/second).

Zero-padding is a different matter. Suggest you do some reading on FFT's to come up to speed on that, come back if you have questions.

3. Dec 5, 2011

### exidez

Re: Spatial Frequency Transform by doing FFT twice ??

ok, that makes a lot more sense. I guess I was fixed on the idea that it was one dimensional that I missed all the references to 2D.

zero padding is just for computer efficiency is that correct? or is it more to it than that?

4. Dec 5, 2011

### fleem

Re: Spatial Frequency Transform by doing FFT twice ??

Yes, zero padding (in this context) is only for computational efficiency.

5. Dec 5, 2011

### marcusl

Re: Spatial Frequency Transform by doing FFT twice ??

Zero padding also fills in the spectrum, which can be sparse if the data matrix has few rows or columns. This allows you to more clearly see the shape of the spectral lines.