fftwtools (version 0.9-8)

mvfftw: Compute the FFT on each column of a matrix using FFTW3

Description

This will compute the FFT of each column of a matrix using the FFTW3 libraries. Use mvfftw_r2c(x, HermConj=0) for real to complex fft. This will return the result without the redundant complex conjugate. This follows the R convention for returning the unscaled inverse of the FFT. The function mvfftw_c2r(res, HermConj=0, n=dim(x)[1]) will invert the FFT from the result not containing the "Hermitian" redundant conjugate. You must specify, n, the column dimension of the original data--the column length of the original data--if the redundant complex conjugate is not included.

Usage

mvfftw(data, inverse=0, HermConj=1, n=NULL, fftplanopt=0)
mvfftw(data, inverse=0, HermConj=1, n=NULL, fftplanopt=0)
mvfftw_r2c(data, HermConj=1, fftplanopt=0)
mvfftw_c2c(data, inverse=0, fftplanopt=0)
mvfftw_c2r(data, HermConj=1, n=NULL, fftplanopt=0)

Arguments

data

(complex or real) matrix of columns to be processed

inverse

(integer) 1 or 0 indicating if inverse fft is preformed. The return follows the format of the R FFT commands. The result is not scaled.

HermConj

(integer) 1 or 0 indicating if either "Hermitian" redundant conjugate should be returned, or that the complex to real data includes the "Hermitian" redundant conjugate.

n

(integer) column length of the original data set, when using the inverse coplex to real fft without providing the "Hermitian" redundant conjugate.

fftplanopt

(integer) 0 or 1 specifying the flag passed to FFTW. 0 indicates the flag FFTW_ESTIMATE is used, and 1 indicates FFTW_MEASURE is used. See FFTW documentation for use of these flags.

Examples

Run this code
# NOT RUN {
x=c(1, 2, 3, 9, 8, 5, 1, 2, 9, 8, 7, 2)
x= t(matrix(x, nrow=4))
mvfft(x)
t(mvfft(t(mvfft(x))))

res <- mvfftw_r2c(x, HermConj=1)
res
mvfftw_c2c(res, inverse=1)/3
mvfftw_c2r(res)/3

res <- mvfftw_r2c(x, HermConj=0)
res
mvfftw_c2r(res, HermConj=0, n=3)/3


mvfftw_r2c(x, HermConj=1)
mvfft(x)
res <- mvfftw_r2c(x, HermConj=0)
res
mvfftw_c2r(res, HermConj=0, n=3)/3

res <- mvfftw_r2c(t(x), HermConj=1)
res
mvfftw_c2r(res, HermConj=1)/4
res <- mvfftw_r2c(t(x), HermConj=0)
res
mvfftw_c2r(res, HermConj=0, n=4)/4


mvfftw_r2c(t(x), HermConj=1)
mvfft(t(x))

mvfftw(mvfftw(x, HermConj=0), inverse=1, HermConj=0, n=3)/3
mvfftw(mvfftw(t(x), HermConj=0), inverse=1, HermConj=0, n=4)/4
mvfftw(mvfftw(t(x), inverse=1))/4
# }

Run the code above in your browser using DataLab