fft {GPUmatrix}R Documentation

Fast Discrete Fourier Transform (FFT)

Description

The function fft mimics the function fft of the library 'stats' to compute on gpu.matrix-class objects: it "Computes the Discrete Fourier Transform (DFT) of an array with a fast algorithm, the 'Fast Fourier Transform' (FFT)."

The function mvfft mimics the function mvfft of the library 'stats' which: "takes a real or complex matrix as argument, and returns a similar shaped matrix, but with each column replaced by its discrete Fourier transform".

Usage

## S4 method for signature 'gpu.matrix.tensorflow'
fft(z)
## S4 method for signature 'gpu.matrix.torch'
fft(z)
## S4 method for signature 'gpu.matrix.torch,logical'
fft(z,inverse)

## S4 method for signature 'gpu.matrix.torch'
mvfft(z)
## S4 method for signature 'gpu.matrix.tensorflow'
mvfft(z)
## S4 method for signature 'gpu.matrix.torch,logical'
mvfft(z,inverse)

Arguments

z

a gpu.matrix object containing the values to be transformed.

inverse

the same as in the library 'stats': "if TRUE, the unnormalized inverse transform is computed (the inverse has a +in the exponent of e, but here, we do not divide by 1/length(x))". By default is FALSE. Plea Note that this parameter only work for torch.

Details

The function fft mimics the function fft to operate on gpu.matrix-class objects of one dimension. If the input gpu.matrix z has tow dimensions the function will not work, as the method for two dimensions is not implemented yet for gpu.matrix-class objects. In this case the function will display the following error message: "FFT in gpu.matrix with 2 dimensions is not allowed yet".

The function mvfft mimics the function mvfft to operate on gpu.matrix-class objects. This function will apply the discrete Fourier transform to each column of the input z matrix.

Note that the inverse parameter only works for 'torch' for both fft and mvfft functions.

The functions fft and mvfft internally call the corresponding function of the library torch or tensorflow (depending on the type of input gpu.matrix-class).

If the input gpu.matrix-class object(s) are stored on the GPU, then the operations will be performed on the GPU. See gpu.matrix.

Value

It returns a gpu.matrix-class object with the transformed values. To access the real and imaginary information use the function Re() for teh rea part and Im() for the imaginary part. Furthermore, the following code can be used: output@gm$real for the real part and output@gm$imag for the imaginary part.

See Also

For more information see: fft, torch_fft_ifft, and torch_fft_fft.

Examples

if(installTorch()){

x <- gpu.matrix(1:4,ncol = 1)
output_gpu <- fft(x)
output_matrix <- fft(z = as.matrix(x))

#check results:
Re(output_gpu)
Re(output_matrix)
Im(output_gpu)
Im(output_matrix)


x <- gpu.matrix(1:12,ncol = 3)
output_gpu <- mvfft(x)
output_matrix <- mvfft(as.matrix(x))

#check results:
Re(output_gpu)
Re(output_matrix)
Im(output_gpu)
Im(output_matrix)
}



[Package GPUmatrix version 1.0.2 Index]