# What does it mean to calculate the FFT of an integer sequence?

The Fourier transform is used to map functions to and from time/frequency domains. I can make sense of what it means to calculate the Fourier transform of, say:

$$y(t) = e^{j\omega_0t}$$

which is

$$Y(\omega) = 2\pi\delta(\omega - \omega_0)$$

But, what does it mean when I use, for example, R language's FFT function stats::fft(x) for an arbitrary x array of real values, say, x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)?

> x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
> stats::fft(x)
[1] 55+ 0.000000i -5+15.388418i -5+ 6.881910i -5+ 3.632713i -5+ 1.624598i
[6] -5+ 0.000000i -5- 1.624598i -5- 3.632713i -5- 6.881910i -5-15.388418i


Note: I used R, but it was just an example. Could be Python's NumPy/SciPy, MATLAB's, Julia, etc.

Now, I know that the FFT is basically a fast implementation of the discrete Fourier transform (DFT). Assuming that, in this example, x is a discrete-valued function in the time domain, I don't have any information on its frequency (or sample frequency, for that matter).

So what does that output means, in the more "essential/core" sense of the Fourier transform? If I interpret those results as the spectrum of x, how can that be? Considering that I only passed amplitudes and not much else.

• The DFT is a linear operator that (1) correlates the input with a series of complex exponentials, and (2) converts correlation to multiplication. Anything else is interpretation, and for that you need context. No context == no meaning.
– MBaz
Oct 1 at 17:34
• Theoretically there's no difference between taking DFTs of [1 , 2 , 3] or [1.1 , 2.5 , 3.2]; and on a modern system they are both converted to floating-point representations before the computation. In the past, and may be for some extremely demanding applications, there was an interest in avoiding the expensive FPU multiplications with integer based arithmetic. See NTT (Number Theoretic Transform for Integer based DFT/FFT) which employs modulo-N aritmetic for implementing an FFT... Oct 1 at 20:29
• @MBaz so what exactly are you correlating the x sequence with? Oct 1 at 20:45
• @Fat32 I'm sorry, but I don't understand how your comment is related to the question. Oct 1 at 20:45
• You ask for the: "meaning of FTT of an integer sequence" in your title, and my comment tells you that it does not have any specific meaning to take FFT of an integer sequence... In the second part, I also suggest you look for NTT for integer based FFTs...? May be you should edit your question for clarity and focus. What do you mean by integer sequence? (NOTE: there's a specific set of integer based transforms in DSP, so probably you are not aware of the fact that the term integer may trigger a false reaction ;-) ) Oct 1 at 21:19

(edited): Considering that I only passed amplitudes and not much else, if I interpret those results as the spectrum of $$x$$, how can that be?

You passed it amplitudes in a specific order. That means that you can then do any transform on it that depends on the ordering -- which the DFT does.

Without making further assumptions about how the data set was arrived at, the spectrum of $$x$$ is pretty much a stand-alone thing, meaning whatever it means to your problem at hand to have that spectrum.

Where Fourier analysis becomes useful is if you can make assumptions about the systems that are generating the data, or that are operating on that signal. If you assume that those systems are linear, and even more so if you assume that those systems are time-invariant*, then it gets really handy, because linear systems behave in predictable ways to sinusoidal inputs, and because linear systems have the property of superposition.

Even where the problem at hand isn't explicitly citing linear systems, it's an implicit assumption to Fourier analysis that you're dealing with systems that are linear, nearly linear, or that at least have nearly linear components.

* Although that's not necessary for Fourier analysis.

Hi, eduardokapp. I think you can understand Fourier transform,dft and fft. so, i am going to explain about the meaning of your time domain integer sequence and its fft result by using following simple image from matlab.

here, red line is the spectrum and time-graph when Fs is 500 and blue line is when Fs is 1000. so, your integer sequence is the sample values that have any sample-rate you can select. therefore, fft result is specified by the sample-rate. so, one value of fft result sequence is the ft result for the frequency operated from the index of the value.

here, my matlab code :


Fs1 = 1000;            % Sampling frequency
Fs2 = 500;
T1 = 1/Fs1;             % Sampling period
T2 = 1/Fs2;
L = 10;             % Length of signal
t1 = (0:L-1)*T1;        % Time vector
t2 = (0:L-1)*T2;

%S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%X = S + 2*randn(size(t));

X = (0:L-1);     % your integer sequence
subplot(2,1,1)
plot(1000*t1(1:10),X(1:10),1000*t2(1:10),X(1:10))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('t (milliseconds)')
ylabel('X(t)')

Y = fft(X); % fft result
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f1 = Fs1*(0:(L/2))/L;
f2 = Fs2*(0:(L/2))/L;
subplot(2,1,2)
plot(f1,P1,f2,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')



thanks.