Difference between revisions of "Fourier Transform"
m |
|||
(10 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:Analytica User Guide]] | + | [[Category: Analytica User Guide]] |
− | <breadcrumbs>Analytica User Guide > | + | [[Category: Array Functions]] |
+ | |||
+ | <breadcrumbs>Analytica User Guide > Array functions > {{PAGENAME}}</breadcrumbs> | ||
__TOC__ | __TOC__ | ||
− | The Fourier and inverse Fourier transforms convert a time-series into a power spectrum and | + | The Fourier and inverse Fourier transforms convert a time-series into a power spectrum and vice versa. These are well-known functions used for many applications including finding and characterizing periodicities in time-series analysis and regression, fast convolution and de-convolution, transfer functions for solving systems of differential equations, Bayesian analysis using characteristic functions, and signal filtering. |
− | finding and characterizing periodicities in time-series analysis and regression | ||
− | and de-convolution | ||
− | equations | ||
− | The discrete Fourier transform involves a time domain | + | The discrete Fourier transform involves a time domain and a frequency domain, each with a corresponding index. The points in the time index are equally spaced at intervals of ''Δt''. The points in the frequency index are equally spaced at ''ΔF'' . Both indexes have <code>n</code>points. The interval spacings are related as: |
− | domain | ||
− | of Δt | ||
− | + | ::<math> | |
+ | \Delta t =\frac{1}{n \Delta t} | ||
+ | </math> | ||
− | The quantity 1/(Δt) is | + | The quantity 1/(Δt) is termed the sampling frequency. It should be at least twice the smallest frequency that is present in the underlying continuous signal. See [[FFT]] for additional details. |
− | frequency that is present in the underlying continuous signal. See FFT | ||
− | additional details. | ||
==FFT(x, t, freq)== | ==FFT(x, t, freq)== | ||
− | Computes the Discrete Fourier Transform (DFT) of the time-series | + | Computes the Discrete Fourier Transform ([[FFTInv#The_Discrete_Fourier_Transform|DFT]]) of the time-series «x», indexed by «t», and returns the discrete frequency spectrum as a complex array indexed by «freq». It performs this calculation using the Fast Fourier Transform ([[FFT]]) algorithm. The indexes «t» and «freq» must have the same length. This is a complex-valued function -- even if «x» is real-valued, the result in general will be an array of complex numbers. You can apply the [[Abs]]() function to the result to obtain the magnitude of the frequency component if you are not interested in the phase. The discrete Fourier transform is defined as |
− | the discrete frequency spectrum as a complex array indexed by | ||
− | using the Fast Fourier Transform (FFT) algorithm. The indexes | ||
− | length. This is a complex-valued function -- even if | ||
− | The discrete Fourier transform is defined as | ||
− | + | ::<math> | |
H_k = \sum_{t=0}^{n-1} x_{t}e^{2j\pi t k /n} | H_k = \sum_{t=0}^{n-1} x_{t}e^{2j\pi t k /n} | ||
− | </math> | + | </math> |
+ | |||
+ | The computation is fastest when the length of the indexes is a power of 2. It is also reasonably efficient when all the prime factors of the length of the index is small. So, for example, it is fairly efficient when the indexes are a power of 10, since the length factors to powers of 2 and 5, both of which are still small. The computation time increases approximately quadratically with the square of the largest factor. | ||
− | + | '''Examples:''' For usage examples, please see [[FFT]]. | |
− | |||
− | |||
− | |||
− | |||
− | + | ==FFTInv(x, freq, t)== | |
+ | Computes the inverse Discrete Fourier Transform ([[FFTInv#The_Discrete_Fourier_Transform|DFT]]) using the Fast Fourier Transform ([[FFT]]) algorithm. The frequency spectrum, «x», is indexed by «freq», and typically consists of complex numbers encoding both the magnitude and phase of each frequency. Returns the time-series with the indicated spectrum, indexed by «t». The indexes «freq» and «t» must have the same length. See [[FFTInv]](). | ||
− | + | The inverse DFT is defined as | |
− | == | + | ::<math> |
− | + | H_t = \sum_{k=0}^{n-1} x_{k}e^{-2j\pi t k /n} | |
− | + | </math> | |
+ | The efficiency of [[FFTInv]]() is the same as for [[FFT]](), maximally efficient when the length of the indexes is a power or 2. | ||
− | |||
==See Also== | ==See Also== | ||
+ | * [[FFT]]() | ||
+ | * [[FFTInv]]() | ||
+ | * [[Transforming functions]] | ||
+ | |||
+ | |||
<footer>Interpolation functions / {{PAGENAME}} / Sets - collections of unique elements</footer> | <footer>Interpolation functions / {{PAGENAME}} / Sets - collections of unique elements</footer> |
Latest revision as of 17:40, 18 July 2018
The Fourier and inverse Fourier transforms convert a time-series into a power spectrum and vice versa. These are well-known functions used for many applications including finding and characterizing periodicities in time-series analysis and regression, fast convolution and de-convolution, transfer functions for solving systems of differential equations, Bayesian analysis using characteristic functions, and signal filtering.
The discrete Fourier transform involves a time domain and a frequency domain, each with a corresponding index. The points in the time index are equally spaced at intervals of Δt. The points in the frequency index are equally spaced at ΔF . Both indexes have n
points. The interval spacings are related as:
- [math]\displaystyle{ \Delta t =\frac{1}{n \Delta t} }[/math]
The quantity 1/(Δt) is termed the sampling frequency. It should be at least twice the smallest frequency that is present in the underlying continuous signal. See FFT for additional details.
FFT(x, t, freq)
Computes the Discrete Fourier Transform (DFT) of the time-series «x», indexed by «t», and returns the discrete frequency spectrum as a complex array indexed by «freq». It performs this calculation using the Fast Fourier Transform (FFT) algorithm. The indexes «t» and «freq» must have the same length. This is a complex-valued function -- even if «x» is real-valued, the result in general will be an array of complex numbers. You can apply the Abs() function to the result to obtain the magnitude of the frequency component if you are not interested in the phase. The discrete Fourier transform is defined as
- [math]\displaystyle{ H_k = \sum_{t=0}^{n-1} x_{t}e^{2j\pi t k /n} }[/math]
The computation is fastest when the length of the indexes is a power of 2. It is also reasonably efficient when all the prime factors of the length of the index is small. So, for example, it is fairly efficient when the indexes are a power of 10, since the length factors to powers of 2 and 5, both of which are still small. The computation time increases approximately quadratically with the square of the largest factor.
Examples: For usage examples, please see FFT.
FFTInv(x, freq, t)
Computes the inverse Discrete Fourier Transform (DFT) using the Fast Fourier Transform (FFT) algorithm. The frequency spectrum, «x», is indexed by «freq», and typically consists of complex numbers encoding both the magnitude and phase of each frequency. Returns the time-series with the indicated spectrum, indexed by «t». The indexes «freq» and «t» must have the same length. See FFTInv().
The inverse DFT is defined as
- [math]\displaystyle{ H_t = \sum_{k=0}^{n-1} x_{k}e^{-2j\pi t k /n} }[/math]
The efficiency of FFTInv() is the same as for FFT(), maximally efficient when the length of the indexes is a power or 2.
See Also
Enable comment auto-refresher