inttrans

inttrans — FFT and other integral transforms

Synopsis




gint                gwy_fft_find_nice_size              (gint size);
void                gwy_data_line_fft                   (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_line_part_fft              (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         gint from,
                                                         gint len,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_line_fft_raw               (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         GwyTransformDirection direction);
void                gwy_data_field_1dfft                (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyOrientation orientation,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_field_area_1dfft           (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         gint col,
                                                         gint row,
                                                         gint width,
                                                         gint height,
                                                         GwyOrientation orientation,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_field_1dfft_raw            (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyOrientation orientation,
                                                         GwyTransformDirection direction);
void                gwy_data_field_2dfft                (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_field_area_2dfft           (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         gint col,
                                                         gint row,
                                                         gint width,
                                                         gint height,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);
void                gwy_data_field_2dfft_raw            (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyTransformDirection direction);
void                gwy_data_field_2dfft_humanize       (GwyDataField *data_field);
void                gwy_data_field_cwt                  (GwyDataField *data_field,
                                                         GwyInterpolationType interpolation,
                                                         gdouble scale,
                                                         Gwy2DCWTWaveletType wtype);
void                gwy_data_field_fft_filter_1d        (GwyDataField *data_field,
                                                         GwyDataField *result_field,
                                                         GwyDataLine *weights,
                                                         GwyOrientation orientation,
                                                         GwyInterpolationType interpolation);

Description

Details

gwy_fft_find_nice_size ()

gint                gwy_fft_find_nice_size              (gint size);

Finds a nice-for-FFT array size.

The `nice' means three properties are guaranteed: it is greater than or equal to size; it can be directly used with current FFT backend without scaling (simplefft can only handle powers of 2); and the transform is fast (this is important for FFTW backend which can handle all array sizes, but performance may suffer).

size : Array size. Currently it must not be larger than a hard-coded maximum (64800) which should be large enough for all normal uses.
Returns : A nice FFT array size.

gwy_data_line_fft ()

void                gwy_data_line_fft                   (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Calculates Fast Fourier Transform of a data line.

A windowing or data leveling can be applied if requested.

rsrc : Real input data line.
isrc : Imaginary input data line.
rdest : Real output data line. It will be resized to the size of the input data line.
idest : Imaginary output data line. It will be resized to the size of the input data line.
windowing : Windowing mode.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS value while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract line (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_line_part_fft ()

void                gwy_data_line_part_fft              (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         gint from,
                                                         gint len,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Calculates Fast Fourier Transform of a part of a data line.

A windowing or data leveling can be applied if requested.

rsrc : Real input data line.
isrc : Imaginary input data line.
rdest : Real output data line, it will be resized to len.
idest : Imaginary output data line, it will be resized to len.
from : The index in input lines to start from (inclusive).
len : Lenght of data line part, it must be at least 4.
windowing : Windowing mode.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS value while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract line (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_line_fft_raw ()

void                gwy_data_line_fft_raw               (GwyDataLine *rsrc,
                                                         GwyDataLine *isrc,
                                                         GwyDataLine *rdest,
                                                         GwyDataLine *idest,
                                                         GwyTransformDirection direction);

Calculates Fast Fourier Transform of a data line.

The resolutions of rsrc and isrc have to be from the set of sizes returned by gwy_fft_find_nice_size(). No leveling, windowing nor scaling is performed.

rsrc : Real input data line.
isrc : Imaginary input data line.
rdest : Real output data line. It will be resized to the size of the input data line.
idest : Imaginary output data line. It will be resized to the size of the input data line.
direction : FFT direction.

Since 2.1


gwy_data_field_1dfft ()

void                gwy_data_field_1dfft                (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyOrientation orientation,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Transforms all rows or columns in a data field with Fast Fourier Transform.

If requested a windowing and/or leveling is applied to preprocess data to obtain reasonable results.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform which can be somewhat faster than complex-to-complex transform.
rout : Real output data field, it will be resized to area size.
iout : Imaginary output data field, it will be resized to area size.
orientation : Orientation: pass GWY_ORIENTATION_HORIZONTAL to transform rows, GWY_ORIENTATION_VERTICAL to transform columns.
windowing : Windowing type.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract line (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_field_area_1dfft ()

void                gwy_data_field_area_1dfft           (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         gint col,
                                                         gint row,
                                                         gint width,
                                                         gint height,
                                                         GwyOrientation orientation,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Transforms all rows or columns in a rectangular part of a data field with Fast Fourier Transform.

If requested a windowing and/or leveling is applied to preprocess data to obtain reasonable results.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform which can be somewhat faster than complex-to-complex transform.
rout : Real output data field, it will be resized to area size.
iout : Imaginary output data field, it will be resized to area size.
col : Upper-left column coordinate.
row : Upper-left row coordinate.
width : Area width (number of columns), must be at least 4 for horizontal transforms.
height : Area height (number of rows), must be at least 4 for vertical transforms.
orientation : Orientation: pass GWY_ORIENTATION_HORIZONTAL to transform rows, GWY_ORIENTATION_VERTICAL to transform columns.
windowing : Windowing type.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract lines (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_field_1dfft_raw ()

void                gwy_data_field_1dfft_raw            (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyOrientation orientation,
                                                         GwyTransformDirection direction);

Transforms all rows or columns in a data field with Fast Fourier Transform.

The resolution of rin and iin in the transformed direction has to be from the set of sizes returned by gwy_fft_find_nice_size(). No leveling, windowing nor scaling is performed.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform.
rout : Real output data field, it will be resized to rin size.
iout : Imaginary output data field, it will be resized to rin size.
orientation : Orientation: pass GWY_ORIENTATION_HORIZONTAL to transform rows, GWY_ORIENTATION_VERTICAL to transform columns.
direction : FFT direction.

Since 2.1


gwy_data_field_2dfft ()

void                gwy_data_field_2dfft                (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Calculates 2D Fast Fourier Transform of a rectangular a data field.

If requested a windowing and/or leveling is applied to preprocess data to obtain reasonable results.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform which can be somewhat faster than complex-to-complex transform.
rout : Real output data field, it will be resized to area size.
iout : Imaginary output data field, it will be resized to area size.
windowing : Windowing type.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract plane (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_field_area_2dfft ()

void                gwy_data_field_area_2dfft           (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         gint col,
                                                         gint row,
                                                         gint width,
                                                         gint height,
                                                         GwyWindowingType windowing,
                                                         GwyTransformDirection direction,
                                                         GwyInterpolationType interpolation,
                                                         gboolean preserverms,
                                                         gint level);

Calculates 2D Fast Fourier Transform of a rectangular area of a data field.

If requested a windowing and/or leveling is applied to preprocess data to obtain reasonable results.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform which can be somewhat faster than complex-to-complex transform.
rout : Real output data field, it will be resized to area size.
iout : Imaginary output data field, it will be resized to area size.
col : Upper-left column coordinate.
row : Upper-left row coordinate.
width : Area width (number of columns), must be at least 4.
height : Area height (number of rows), must be at least 4.
windowing : Windowing type.
direction : FFT direction.
interpolation : Interpolation type.
preserverms : TRUE to preserve RMS while windowing.
level : 0 to perform no leveling, 1 to subtract mean value, 2 to subtract plane (the number can be interpreted as the first polynomial degree to keep, but only the enumerated three values are available).

gwy_data_field_2dfft_raw ()

void                gwy_data_field_2dfft_raw            (GwyDataField *rin,
                                                         GwyDataField *iin,
                                                         GwyDataField *rout,
                                                         GwyDataField *iout,
                                                         GwyTransformDirection direction);

Calculates 2D Fast Fourier Transform of a rectangular area of a data field.

The resolutions of rin and iin have to be from the set of sizes returned by gwy_fft_find_nice_size(). No leveling, windowing nor scaling is performed.

rin : Real input data field.
iin : Imaginary input data field. It can be NULL for real-to-complex transform.
rout : Real output data field, it will be resized to rin size.
iout : Imaginary output data field, it will be resized to rin size.
direction : FFT direction.

Since 2.1


gwy_data_field_2dfft_humanize ()

void                gwy_data_field_2dfft_humanize       (GwyDataField *data_field);

Rearranges 2D FFT output to a human-friendly form.

Top-left, top-right, bottom-left and bottom-right sub-squares are swapped to obtain a humanized 2D FFT output with (0,0) in the center.

data_field : A data field.

gwy_data_field_cwt ()

void                gwy_data_field_cwt                  (GwyDataField *data_field,
                                                         GwyInterpolationType interpolation,
                                                         gdouble scale,
                                                         Gwy2DCWTWaveletType wtype);

Computes a continuous wavelet transform (CWT) at given scale and using given wavelet.

data_field : A data field.
interpolation : Interpolation type.
scale : Wavelet scale.
wtype : Wavelet type.

gwy_data_field_fft_filter_1d ()

void                gwy_data_field_fft_filter_1d        (GwyDataField *data_field,
                                                         GwyDataField *result_field,
                                                         GwyDataLine *weights,
                                                         GwyOrientation orientation,
                                                         GwyInterpolationType interpolation);

Performs 1D FFT filtering of a data field.

data_field : A data field to filter.
result_field : A data field to store the result to. It will be resampled to data_field's size.
weights : Filter weights for the lower half of the spectrum (the other half is symmetric). Its size can be arbitrary, it will be interpolated.
orientation : Filter direction.
interpolation : The interpolation to use for resampling.