FFT
Compute a fast Fourier transform (FFT) or inverse fast/nonuniform Fourier transform (IFFT/INFT) using an FFT study step and solver,
Syntax
model.sol(sname).create(fname,"FFT")
model.sol(sname).feature(fname).set(pname,pvalue)
Description
Operation feature. The following property/values are accepted:
on | off
sol | firstderiv | secderiv
on | off
on | off
nat | sym
on | off
Periodicity of input data; only available if fftextend is set to off for inverse NFT/FFT (always available for forward FFT).
none | fromexpr
none | fromexpr
on | off
cont | discrete
allfreqs | interval
out | store
Store time steps taken by the solver (out) or output times stored in fftstoretrange (store).
Output times for the inverse FFT if fftstoretimes is set to store.
transfft | transifft
transfft (depends on type of FFT study step)
on | off
on | off
Expression for window function, can be expressed in terms of t, freq, niterFFTin, and niterFFTout (if applicable).
fromexpr | cutoff | rectangle | gauss | hamming | hanning | blackman | tukey
fromexpr | cutoff | rectangle | gauss | hamming | hanning | blackman | tukey
on | off
sol | init
init | sol
Example
Code for Use with Java
model.study("std2").create("tdfft", "TimeToFreqFFT");
model.study("std2").feature("tdfft").set("linpstudy", "std1");
model.study("std2").feature("tdfft").set("fftstarttime", "0.5");
model.study("std2").feature("tdfft").set("fftendtime", "2.0");
model.study().create("std3");
model.study("std3").create("fdfft2", "FreqToTimeFFT");
model.study("std3").feature("fdfft2").set("linpstudy", "std2");
 
...
 
model.sol("sol7").create("fft1", "FFT");
model.sol("sol7").feature("fft1").set("ffttranstype", "transfft");
model.sol("sol7").feature("fft1").set("fftstarttime", "0.5");
model.sol("sol7").feature("fft1").set("fftendtime", "2.0");
model.sol("sol7").feature("fft1").set("control", "tdfft");
 
...
 
model.sol("sol9").feature("fft1").set("ffttranstype", "transifft");
model.sol("sol9").feature("fft1").set("control", "fdfft2");
 
model.study("std3").feature("fdfft2").set("linpmethod", "sol");
model.study("std3").feature("fdfft2").set("linpstudy", "std2");
model.study("std3").feature("fdfft2").set("linpsol", "current");
model.study("std3").feature("fdfft2").set("linpsoluse", "current")
 
...
 
model.sol("sol2").feature("ft1").set("fftstarttime", "0.5");
model.sol("sol2").feature("ft1").set("fftendtime", "2.0");
model.sol("sol2").feature("ft1").set("fftperiodic", "off");
model.sol("sol2").feature("ft1").set("fftoutorder", "nat");
 
...
 
model.sol("sol2").feature("ft1").set("fftphase", "on");
model.sol("sol2").feature("ft1").set("fftwintypefw", "fromexpr");
model.sol("sol2").feature("ft1").set("fftwinexpr","(niterFFTin<5)*niterFFTin");
model.sol("sol2").feature("ft1").set("fftphasetypein", "fromexpr");
model.sol("sol2").feature("ft1").set("fftphaseinexpr", "5+i*2*niterFFTin");
model.sol("sol2").feature("ft1").set("fftphasetypeout", "fromexpr");
model.sol("sol2").feature("ft1").set("fftphaseoutexpr","2+i*4*niterFFTout");
Compatibility
The properties fftbwalgtype and fftmeasure from earlier versions are no longer available since version 5.2.
In version 5.2, the property fftwintype for the window type in earlier versions was replaced by fftwintypefw and fftwintypeinv for the window type for a forward FFT and for an inverse NFT/FFT, respectively.
In version 5.2, the property fftwindow for switching a window on and off in earlier versions was replaced by fftwindowfw and fftwindowinv for the window type for a forward FFT and for an inverse NFT/FFT, respectively.
In version 5.2, the property tlist for the input time range to a forward FFT in earlier versions was replaced by the properties fftstarttime and fftendtime for the start time and end time, respectively.