[API](/solutions/geotoolkit/geotoolkit_js/apis/readme) / [geotoolkit](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit) / [seismic](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic) / [analysis](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic#analysis) / [transforms](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic#transforms) / [AbstractFFT](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic#abstractfft) / AbstractFFT

# Class: AbstractFFT

[transforms](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic#transforms).[AbstractFFT](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.seismic#abstractfft).AbstractFFT

Defines a base class for various discrete fourier transforms
Ported from the Saddleback Geosolution's Java implementation

## Hierarchy

- **`AbstractFFT`**
↳ [`AbstractFFTSpectra`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfftspectra.abstractfftspectra)


## Table of contents

Constructors
- [new AbstractFFT(real, imag, sampleRate, length)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft.md#new abstractfft(real, imag, samplerate, length))


Methods
| [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getclassname) | [getFDSampleRate](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getfdsamplerate) | [getHalfLength](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#gethalflength) |
|  --- | --- | --- |
| [getImaginaryComponents](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getimaginarycomponents) | [getLength](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getlength) | [getLog2Length](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getlog2length) |
| [getNumberNonZeroSamples](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getnumbernonzerosamples) | [getNyquist](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getnyquist) | [getNyquistLength](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getnyquistlength) |
| [getRealComponents](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getrealcomponents) | [getSampleRate](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getsamplerate) | [inverseTransform](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#inversetransform) |
| [setData](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#setdata) | [setDataUnsafe](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#setdataunsafe) | [setSampleRate](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#setsamplerate) |
| [transform](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#transform) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft#getclassname-1) |


## Contents

Constructors
#### new AbstractFFT(real, imag, sampleRate, length)

• **new AbstractFFT**(`real?`, `imag?`, `sampleRate?`, `length?`)

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `real` | `Float32Array` | The real component of the signal |
| `Optional` `imag` | `Float32Array` | The imaginary component of th signal |
| `Optional` `sampleRate` | `number` | The data sampling rate in milliseconds |
| `Optional` `length` | `number` | The desired length of the transform, must be a power of 2 |


Methods
#### getClassName

▸ **getClassName**(): `string`

#### Returns

`string`

#### getFDSampleRate

▸ **getFDSampleRate**(): `number`

Returns the Frequency Domain sample rate. This is the frequency domain sample spacing.

#### Returns

`number`

FrequencySampleRate Frequency Domain sampling rate in milliseconds (ms)

#### getHalfLength

▸ **getHalfLength**(): `number`

Returns half of the length of the calculated FFT (power-of-2)

#### Returns

`number`

halfLength The half-length of the FFT

#### getImaginaryComponents

▸ **getImaginaryComponents**(`getReference`): `Float32Array`

Gets the imaginary signal component

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `getReference` | `boolean` | If true then the reference to signal will be returned. |


#### Returns

`Float32Array`

realComponent The real signal component

#### getLength

▸ **getLength**(): `number`

Returns the length of the calculated FFT (power-of-2).

#### Returns

`number`

length The length of calculated FFT

#### getLog2Length

▸ **getLog2Length**(): `number`

Returns the base 2 logarithm of the transform length

#### Returns

`number`

logLength Log base 2 of the transform length

#### getNumberNonZeroSamples

▸ **getNumberNonZeroSamples**(): `number`

Returns the number of non zero samples that were input inot the last FFT.
This is the number of live samples (less than or equal to a power-of-2);

#### Returns

`number`

nonZero The Number of non-zero samples for input signal

#### getNyquist

▸ **getNyquist**(): `number`

Returns the nyquist frequency for the input signal.
This is the calculated nyquist frequency based on the supplied sample rate.
This is also known as the folding frequency

#### Returns

`number`

nyquist The nyquist frequency

#### getNyquistLength

▸ **getNyquistLength**(): `number`

Returns the sample number of frequency that equals nyquist frequency.

#### Returns

`number`

frequency The Nyquist frequency

#### getRealComponents

▸ **getRealComponents**(`getReference`): `Float32Array`

Gets the real signal component

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `getReference` | `boolean` | If true then the reference to signal will be returned. |


#### Returns

`Float32Array`

realComponent The real signal component

#### getSampleRate

▸ **getSampleRate**(): `number`

Returns the input sample rate of the signal in Milliseconds.
This is the sample rate set before calculation.

#### Returns

`number`

sampleRate Sample rate of input signal in milliseconds (ms)

#### inverseTransform

▸ **inverseTransform**(): `void`

Performs the inverse transform

#### Returns

`void`

#### setData

▸ **setData**(`real?`, `imag?`, `sampleRate?`, `length?`): [`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

Sets the real and imaginary result array

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `real` | `number`[] | `Float32Array` | The real component of the signal |
| `Optional` `imag` | `number`[] | `Float32Array` | The imaginary component of the signal |
| `Optional` `sampleRate` | `string` | `number` | The data sampling rate in milliseconds |
| `Optional` `length` | `string` | `number` | The desired length of the transform, must be a power of 2 |


#### Returns

[`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

#### setDataUnsafe

▸ **setDataUnsafe**(`real`, `imag`): [`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

Sets the real and imaginary arrays directly

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `real` | `Float32Array` | The imaginary component of the signal |
| `imag` | `Float32Array` | The real component of the signal |


#### Returns

[`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

#### setSampleRate

▸ **setSampleRate**(`sampleRate`): [`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

Sets the input sample rate of the signal in Milliseconds.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `sampleRate` | `number` | Sample rate of input signal in milliseconds (ms) |


#### Returns

[`AbstractFFT`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.seismic.analysis.transforms.abstractfft.abstractfft)

this

#### transform

▸ **transform**(): `void`

Performs the transform

#### Returns

`void`

#### getClassName

▸ `Static` **getClassName**(): `string`

#### Returns

`string`