How Signals Are Sampled and Stored As A Fourier Transform?

AI Thread Summary
Signals are stored in a Fourier Transform function by first sampling the signal at discrete intervals, resulting in a table or array of amplitude values over a specified time period. To perform a Discrete Fourier Transform (DFT), these sampled values are organized into a vector and processed using an algorithm like the Fast Fourier Transform (FFT). The transformation converts the time-domain signal into its frequency-domain representation. The process involves creating a new table that reflects the frequency components of the original signal. The inverse Fourier Transform can then be applied to reconstruct the original signal from its frequency representation, allowing for analysis and manipulation of the signal in both domains. The discussion emphasizes the importance of understanding how to convert sampled data into a usable function for Fourier analysis.
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)?
 
Technology 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 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:
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
 

Similar threads

Back
Top