# How Signals Are Sampled and Stored As A Fourier Transform?

1. Mar 28, 2016

### iScience

This question is a little basic but.. how are signals stored in a Fourier Transform function f(t)?

In my PDE class we were always given a base function to put in terms of sin and cos. But when taking a bunch of samples, all I end up with is a table/array over some time T. How might I use this to store it in a fourier Transform function (dft)?

2. Mar 28, 2016

### Simon Bridge

Um ... the same way they are stored as anything, Hint: we use a computer.
I have a feeling you want to ask a different question...

3. Mar 28, 2016

### iScience

Of course, here you go:

In my PDE class we were always given a base function to put in terms of sin and cos. But when taking a bunch of samples, all I end upwith is a table/array over some time T. How might I use this to store it in a fourier Transform function (dft)?

If you could specify what I could perhaps clarify HERE, in the actual meat of the question, that would be better thanks.

4. Mar 28, 2016

### Simon Bridge

Let's see if I understand you ... you have sampled a signal - so you have amplitude values at discrete time intervals ... and you want to know how to turn that into it's fourier transform?

5. Mar 28, 2016

### iScience

yyup! I mean the only thing I'm tripped up on is turning that table into a function. I can take a given function and express it with sines and cosines via the Fourier Transform, but I need to know how to turn those amplitude values into a function for me to use the Fourier Transform.

6. Mar 28, 2016

### Simon Bridge

If the actual signal is f(t), then your sample set is $\sum_n f_n\delta(t-n\Delta t)$ ... so that is what you transform.
Here $f_n = f(n\Delta t)$ and $\delta(t)$ is the Dirac delta function.

You are basically doing a "discrete fourier transform".

What we'd normally do it put the sample series in a vector and use the FFT function.

7. Mar 28, 2016

### .Scott

I think I understand your question differently that Simon has. You're talking about a "table" and you're posting in the "Programming and Computer Science" forum, so I am assuming that we are dealing with Discrete Fourier Transforms.

I presume you started with a table "S" of signal amplitudes.
Then you probably performed (or want to perform) an FFT on that table yielding a new table in the frequency domain "F" (as described by Simon.

For example, in pseudo code:
Code (Text):

int t;
complex S(32), F(32);
for t=0 to 31 {  S = amplitudeFunction(n); }
F = FFT(S);

The value in F can now be used to compute the function of "x" based on sines and cosines as follows:
1) Compute w=2*pi/length(F) = pi/32
2) For n=0 to 31 compute $R_{n} = f_{n} \times (cosine(w)+i \space sine(w)) / length(F)$
3) S(x) will be the sum of those sine and cosine terms (the Rn's).

Those last steps are basically an inverse Fourier Transform.
Here it is in MatLab:
Code (Text):

function ProblemFFTi()
ts=[0:31];
S = AnyFunc(ts);
F = fft(S,32);
SB = InvFFT(ts,F);
ss = SB ./ S;
ss = SB ./ S;  % A break point here will show that SB and S are equal.
end

function [x] = AnyFunc(t)
x = ((t-16)/15).^2;
x(x>1) = 1-x(x>1);
end

function [x] = InvFFT(t,F)
ln = length(F);
w0 = 2*pi*transpose(0:(ln-1))/(ln);
ct = cos(w0*t);
st = 1i*sin(w0*t);
x = (F * (ct + st))/ln;
end