How Signals Are Sampled and Stored As A Fourier Transform?

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
6 replies · 5K views
iScience
Messages
466
Reaction score
5
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)?
 
Physics news on Phys.org
iScience said:
This question is a little basic but.. how are signals stored in a Fourier Transform function f(t)?
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...
 
Simon Bridge said:
I have a feeling you want to ask a different question...

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.
 
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?
 
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.
 
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.
 
iScience said:
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.
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:
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 [itex]R_{n} = f_{n} \times (cosine(w)+i \space sine(w)) / length(F)[/itex]
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:
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