| Package | org.si.utils |
| Class | public class FFT |
| Inheritance | FFT Object |
| Property | Defined By | ||
|---|---|---|---|
| im : Vector.<Number> Vector for imaginal numbers, you can set data and get result by this valiables, the length is a HALF of the source data length. | FFT | ||
| length : int [read-only] source data length | FFT | ||
| re : Vector.<Number> Vector for real numbers, you can set data and get result by this valiables, the length is a HALF of the source data length. | FFT | ||
| Method | Defined By | ||
|---|---|---|---|
FFT(len:int) constructor, specify source data length. | FFT | ||
Calculate Discrete Cosine Transform
| FFT | ||
Calculate Fast Fourier Transform with complex numbers. | FFT | ||
Calculate Inversed Discrete Cosine Transform
| FFT | ||
Calculate Inversed Fast Fourier Transform with complex numbers. | FFT | ||
Calculate Fast Fourier Transform with real numbers. | FFT | ||
Calculate Inversed Fast Fourier Transform with real numbers. | FFT | ||
cdft(isgn:int, src:Vector.<Number>):void [Functions from original code] Complex Discrete Fourier Tranform
| FFT | ||
ddct(isgn:int, src:Vector.<Number>):void [Functions from original code] Discrete Cosine Tranform
| FFT | ||
ddst(isgn:int, src:Vector.<Number>):void [Functions from original code] Discrete Sine Tranform (has some bugs in current version)
| FFT | ||
getData(dst:Vector.<Number> = null):Vector.<Number> Get result. | FFT | ||
getIntensity(dst:Vector.<Number> = null):Vector.<Number> Get intensity (re^2+im^2). | FFT | ||
getMagnitude(dst:Vector.<Number> = null):Vector.<Number> Get magnitude (sqrt(re^2+im^2)). | FFT | ||
getPhase(dst:Vector.<Number> = null):Vector.<Number> Get phase (atan2(re^2+im^2)). | FFT | ||
rdft(isgn:int, src:Vector.<Number>):void [Functions from original code] Real Discrete Fourier Tranform
| FFT | ||
Scaling data. | FFT | ||
Set source data, the passed vector is copied to "re" and "im" properties, the length of "src" must be same as you passed to constructor. | FFT | ||
| im | property |
public var im:Vector.<Number>Vector for imaginal numbers, you can set data and get result by this valiables, the length is a HALF of the source data length.
| length | property |
length:int [read-only] source data length
public function get length():int| re | property |
public var re:Vector.<Number>Vector for real numbers, you can set data and get result by this valiables, the length is a HALF of the source data length.
| FFT | () | Constructor |
public function FFT(len:int)constructor, specify source data length. The length must be 2^n.
Parameterslen:int |
| calcDCT | () | method |
| calcFFT | () | method |
public function calcFFT():FFTCalculate Fast Fourier Transform with complex numbers.
ReturnsFFT — this insance
|
| calcIDCT | () | method |
public function calcIDCT():FFTCalculate Inversed Discrete Cosine Transform
ReturnsFFT — this insance
|
| calcIFFT | () | method |
public function calcIFFT():FFTCalculate Inversed Fast Fourier Transform with complex numbers.
ReturnsFFT — this insance
|
| calcRealFFT | () | method |
public function calcRealFFT():FFTCalculate Fast Fourier Transform with real numbers.
ReturnsFFT — this insance
|
| calcRealIFFT | () | method |
public function calcRealIFFT():FFTCalculate Inversed Fast Fourier Transform with real numbers.
ReturnsFFT — this insance
|
| cdft | () | method |
public function cdft(isgn:int, src:Vector.<Number>):void[Functions from original code] Complex Discrete Fourier Tranform
Parameters
isgn:int — 1 for FFT, -1 for IFFT.
| |
src:Vector.<Number> — data to transform. The length must be same as you passed to constructor.
|
| ddct | () | method |
public function ddct(isgn:int, src:Vector.<Number>):void[Functions from original code] Discrete Cosine Tranform
Parameters
isgn:int — [ATTENTION] -1 for DCT, 1 for IDCT. Opposite from FFT.
| |
src:Vector.<Number> — data to transform. The length must be same as you passed to constructor.
|
| ddst | () | method |
public function ddst(isgn:int, src:Vector.<Number>):void[Functions from original code] Discrete Sine Tranform (has some bugs in current version)
Parameters
isgn:int — [ATTENTION] -1 for DST, 1 for IDST. Opposite from FFT.
| |
src:Vector.<Number> — data to transform. The length must be same as you passed to constructor.
|
| getData | () | method |
public function getData(dst:Vector.<Number> = null):Vector.<Number>Get result. The returned vector is a combination of "re"(even member) and "im"(odd member) properties.
Parameters
dst:Vector.<Number> (default = null) — Vector to recieve the result. The length must be same as you passed to constructor. Allocate vector inside when you pass null.
|
Vector.<Number> — A combination of "re"(even member) and "im"(odd member) properties.
|
| getIntensity | () | method |
public function getIntensity(dst:Vector.<Number> = null):Vector.<Number>Get intensity (re^2+im^2).
Parameters
dst:Vector.<Number> (default = null) — Vector to recieve intensities. The length must be HALF of the source data length. Allocate vector inside when you pass null.
|
Vector.<Number> — Vector of intensities, same vector as passed by the arugument when its not null.
|
| getMagnitude | () | method |
public function getMagnitude(dst:Vector.<Number> = null):Vector.<Number>Get magnitude (sqrt(re^2+im^2)).
Parameters
dst:Vector.<Number> (default = null) — The vector to recieve magnitudes. The length must be HALF of the source data length. Allocate vector inside when you pass null.
|
Vector.<Number> — Vector of magnitudes, same vector as passed by the arugument when its not null.
|
| getPhase | () | method |
public function getPhase(dst:Vector.<Number> = null):Vector.<Number>Get phase (atan2(re^2+im^2)).
Parameters
dst:Vector.<Number> (default = null) — The vector to recieve phases. The length must be HALF of the source data length. Allocate vector inside when you pass null.
|
Vector.<Number> — Vector of phases, same vector as passed by the arugument when its not null.
|
| rdft | () | method |
public function rdft(isgn:int, src:Vector.<Number>):void[Functions from original code] Real Discrete Fourier Tranform
Parameters
isgn:int — 1 for FFT, -1 for IFFT.
| |
src:Vector.<Number> — data to transform. The length must be same as you passed to constructor.
|
| scale | () | method |
public function scale(n:Number):FFTScaling data.
Parameters
n:Number — factor
|
FFT — this insance
|
| setData | () | method |
public function setData(src:Vector.<Number>):FFTSet source data, the passed vector is copied to "re" and "im" properties, the length of "src" must be same as you passed to constructor.
Parameters
src:Vector.<Number> |
FFT — this insance
|
// variables
var fft:FFT = new FFT(1024); // specify source data length (must be 2^n)
var source:Vector.<Number> = new Vector.<Number>(1024); // source vector
var result:Vector.<Number> = new Vector.<Number>(1024); // result vector
var magnitude:Vector.<Number> = new Vector.<Number>(512); // result vector for magnitude (half size of source)
var phase :Vector.<Number> = new Vector.<Number>(512); // result vector for phase (half size of source)
// complex source data
for (var i:int=0; i<1024; i+=2) {
source[i] = (i<512) ? -1 : 1; // even members for real part
source[i+1] = 0; // odd members for imaginal part
}
// calculation
fft.setData(source); // set source data
fft.calcFFT(); // calculate FFT
// get result
trace(fft.re); // real part of FFT result (length = 512)
trace(fft.im); // imaginal part of FFT result (length = 512)
fft.getData(result); // recieve combinated result by vector
trace(result); // combinated result (length = 1024, even for real/odd for imaginal)
trace(fft.getMagnitude(magnitude)); // vector for magnitude (length = 512)
trace(fft.getPhase(phase)); // vector for phase (length = 512)
// reconstruction
fft.calcIFFT().scale(1/512); // calculate Inversed FFT with previous result (re and im).
// [REMARKS] The result from calcIFFT(), calcRealIFFT() or calcDCT() is scaled by length/2.
// get result (another way to get result vector)
var reconstructed:Vector.<Number> = fft.getData(); // allocate and return result vector (length = 1024)
// "fft.setData(source).calcFFT().calcIFFT().scale(2/source.length).getData()" is same as source.
trace(reconstructed);
// create FFT module
var fft:FFT = new FFT(1024); // specify source data length (must be 2^n)
// real number source
var source:Vector.<Number> = new Vector.<Number>(1024);
for (var i:int=0; i<1024; i++) {
source[i] = 1-i/512; // simple real number vector
}
// calculate and get result
fft.setDat(source).calcRealFFT(); // calculate FFT for real numbers
trace(fft.re); // real part of FFT result(length = 512)
trace(fft.im); // imaginal part of FFT result (length = 512)
trace(fft.setDat(source).calcDCT().getIntensity()); // intensity of DCT result (length = 512)