sffft3 implements a complex-to-complex Fast Fourier Transform (FFT) along an arbitrary axis.

The FFT library that Madagascar uses is

KISS FFT, created by Mark Borgerding. KISS stands for

Keep it simple, Stupid! **KISS FFT** may not be as fast as

FFTW but it is lightweight and easy to include in the distribution.

The

**axis=** parameter specifies the data axis for performing the transform. The following example from

bei/ft1/plane4 (Jon Claerbout's

*Basic Earth Imaging*) shows different forms of the Fourier transform applied to a 2-D dataset.

The algorithm in

**KISS FFT** uses a mixed-radix algorithm, which is most efficient when the input size is N=2

^{k} 3

^{l} 5

^{m}. By default, the input data is padded to the next optimal size, additionally multiplied by 2. To disable this behavior, use

**opt=n pad=1**.

By default,

**sffft3** applies no scaling in the forward transform and 1/N scaling in the inverse transform. To apply a symmetric

1/√N scaling in both cases, use

**sym=y**.

For a real-to-complex FFT along the first axis, use

sffft1.

For a real-to-real Cosine Fourier Transform, use

sfcosft.

To apply FFT as a linear operator, try

sffft wrapper script.

### Previous programs of the month:

FFTW (the Fastest Fourier Transform in the West) is a famous library implementing an FFT algorithm. It was developed at MIT by Matteo Frigo and Steven G. Johnson and is distributed under a GPL license. By popular demand, Madagascar's FFT-based prog

Weblog:Madagascar development blogTracked:Jul 30, 14:56Previous programs of the month:sffft3sfdipsfderivsfgrey3sfspectrasfnoisesfgraphsfclipsfagcsfenvelopesfcontoursfsmooth

Weblog:Madagascar development blogTracked:Sep 03, 14:02sfpick performs automatic picking from semblance-like panels. The underlying algorithm is described in Appendix B of the paper Velocity analysis using AB semblance and is inspired by the method of virtual endoscopy in medical imaging. The following

Weblog:Madagascar development blogTracked:Sep 08, 16:07sfiwarp performs mapping between different coordinates. If you have sampled functions f(x) and y(x), sfiwarp with inv=y (the default) finds sampled f(y). If inv=n, sfiwarp takes f(y) and y(x) and finds f(x). In both cases, the sampled y(x) function is sup

Weblog:Madagascar development blogTracked:Sep 09, 12:52sfpick performs automatic picking from semblance-like panels. The underlying algorithm is described in Appendix B of the paper Velocity analysis using AB semblance and is inspired by the method of virtual endoscopy in medical imaging. The following

Weblog:Madagascar development blogTracked:Sep 09, 12:52sfkirmod is a program for modeling seismic reflection data using the Kirchhoff method. According to this method, the reflection response is computed by integrating over the reflector surface. For a theoretical derivation, see, for example, Haddon, R. A

Weblog:Madagascar development blogTracked:Oct 13, 19:46sfbandpass implements bandpass filtering using the Butterworth algorithm. The desired bandwidth is specified by low and high frequencies (in Hertz) flo= and fhi=. A continuous low-pass Butterworth filter is given by The actual filtering is imp

Weblog:Madagascar development blogTracked:Nov 18, 13:45sfhalfint implements half-order integration or differentiation, a filtering operation common in 2-D imaging operators such as as slant stacking or Kirchhoff migration. By default, sfhalfint performs half-order integration. To apply half-order different

Weblog:Madagascar development blogTracked:Jan 06, 16:58sfricker1 implements 1-D convolution with the Ricker wavelet. The following example from rsf/rsf/wedge shows convolution modeling with a wedge model using sfricker1. The convolution is implemented in the frequency domain, where the Ricker wavele

Weblog:Madagascar development blogTracked:Jan 18, 12:49sfricker1 implements 1-D convolution with the Ricker wavelet. The following example from rsf/rsf/wedge shows convolution modeling with a wedge model using sfricker1. The convolution is implemented in the frequency domain, where the Ricker wavele

Weblog:Madagascar development blogTracked:Jan 19, 12:00sfpwd implements plane-wave destruction, a filter that attenuates locally plane-wave events, as described in the paper Applications of plane-wave destruction filters. The following example from jsg/diffr/gom shows a seismic section before and after an

Weblog:Madagascar development blogTracked:Feb 09, 16:20sfpow multiplies the input data by a gain function of the form Gx1x2…,xn=x1p1x2p2⋯xnpn The powers p1,p2,…,pn are given by pow1=, pow2=, etc. parameters. For backward compatibility, sftpow tpow= is an alias for sfpow pow1=. The following examp

Weblog:Madagascar development blogTracked:Mar 11, 09:02sfnmo implements normal moveout (NMO) correction, one of the most fundamental operations in seismic reflection data processing. The following example from jsg/avo/avo shows synthetic data before and after NMO correction. NMO transforms presta

Weblog:Madagascar development blogTracked:Apr 08, 06:02sfvscan implements seismic velocity analysis by scanning stacking velocities. This transformation is also known as the velocity transform or the hyperbolic Radon transform. The following example from bei/vela/vscan shows an example for transforming a C

Weblog:Madagascar development blogTracked:May 11, 12:25