Skip to contents

FastTransformFFT2 subclass

FastTransformFFT2 subclass

Details

A specific implementation of a structured fast transform. Inherits from FastTransform.

In particular, the fft2 type applies the following set of operations to each input (column) vector:

  1. Permute/expand (\(P_1\)) rows and pack them into a complex vector \(x\);

  2. Apply a \(y = D_3 F D_2 F D_1 x\) linear transform, where \(F\) represents a complex FFT, and \(D_i\) represent diagonal matrices of random unitary complex values;

  3. Unpack complex vector \(y\) to real vector and permute/contract (\(P_2\)) rows.

Note that this transform will be orthonormal only when \(dim\_in = dim\_out = blocksize\) (in which case, both \(P_1\) and \(P_2\) are permutations).

Otherwise, when \(dim\_in < blocksize\), \(P_1\) represents an expansion (rather than a permutation), and when \(dim\_out < blocksize\), \(P_2\) represents a contraction/decimation (rather than a permutation). When both of these conditions are true, the resulting transform will not be exactly orthogonal or semi-orthogonal, but the rows and columns of the transform are still going to be generally uncorrelated.

It is not recommended that the methods described below are called directly. Instead, use the methods described in the fort() documentation, if possible, unless you positively need low-level access (e.g., to speed up computation on pre-validated inputs).

See also

Super class

fort::FastTransform -> FastTransformFFT2

Methods

Inherited methods


Method new()

Object creation function. It is recommended to call the fort() function with type = "FastTransformFFT2", instead of this method, since no input validation is performed by this method.

Usage

FastTransformFFT2$new(dim_in, dim_out, blocksize)

Arguments

dim_in

Dimensionality of the input for the forward transform.

dim_out

Dimensionality of the output for the forward transform.

blocksize

Dimensionality of the internal transformation (must be a power of 2).

Returns

A matrix with the same number of columns as x.


Method fwd_eval()

Function that performs the forward transform. Do not call this directly unless you know what you are doing: use the %*%.FastTransform or FastTransform$evaluate() methods instead.

Usage

FastTransformFFT2$fwd_eval(x)

Arguments

x

Input matrix of the correct dimensionality

Returns

A matrix with the same number of columns as x.


Method rev_eval()

Function that performs the inverse transform. Do not call this directly unless you know what you are doing: use the %*%.FastTransform or FastTransform$evaluate() methods instead.

Usage

FastTransformFFT2$rev_eval(x)

Arguments

x

Input matrix of the correct dimensionality

Returns

A matrix with the same number of columns as x.


Method calculate_rev_par()

Function that calculates and caches the parameters for the inverse transform. Do not call this directly unless you know what you are doing. If you need the inverse transform, use the solve.FastTransform or FastTransform$get_inverse() methods instead.

Usage

FastTransformFFT2$calculate_rev_par()

Returns

The object itself (invisibly).


Method clone()

The objects of this class are cloneable with this method.

Usage

FastTransformFFT2$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.