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:
Permute/expand (\(P_1\)) rows and pack them into a complex vector \(x\);
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;
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).
Super class
fort::FastTransform
-> FastTransformFFT2
Methods
Inherited methods
fort::FastTransform$as_matrix()
fort::FastTransform$evaluate()
fort::FastTransform$get_dim()
fort::FastTransform$get_inverse()
fort::FastTransform$get_logdet()
fort::FastTransform$get_n_par()
fort::FastTransform$get_ncol()
fort::FastTransform$get_norm()
fort::FastTransform$get_norm_margin()
fort::FastTransform$get_nrow()
fort::FastTransform$get_transpose()
fort::FastTransform$print()
fort::FastTransform$summary()
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)
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.
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.
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.