Re: [eigen] tensor fft

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Unfortunately the FFT code isn't currently documented. You can take at look at https://bitbucket.org/eigen/eigen/src/cae994ddbfe07e3de34e69796c97ec600096edea/unsupported/test/cxx11_tensor_fft.cpp?at=default&fileviewer=file-view-default for examples of fft, and https://bitbucket.org/eigen/eigen/src/cae994ddbfe07e3de34e69796c97ec600096edea/unsupported/test/cxx11_tensor_ifft.cpp?at=default&fileviewer=file-view-default for examples of an inverse fft.

The fft method works as follow: it takes 2 template parameters, FFTResultType and FFTDir. The first parameter indicate what part of the fft transform you want to compute. You can compute the real part, the imaginary part, or both. The second parameter indicates whether you want to compute compute the fft or the inverse transform.

The fft method also takes an array of dimensions. These are the dimensions along which you want to perform the fft. For example, if you have a 3d tensor as input, you can perform a 1d fft by passing an array of 1 dimension. The 2 remaining dimensions will be considered as batch dimensions. You can also perform a 2d fft by passing a 2d array of dimensions, or a 3d fft by passing a 3d array as argument.

Here's an example:

Tensor<float, 3> tensor = bla.
Eigen::array<int, 2> dims = {{0, 2}};
Tensor<std::complex<float>, 3> full_2d_fft = tensor.template fft<Eigen::BothParts, Eigen::FFT_FORWARD>(dims);

This will compute a 2d fft alongside the first an the last dimension of your tensor. The 2nd dimensions will be considered a batch dimension. 

Tensor<float, 3> inverse = full_2d_fft.template fft<Eigen::RealPart, Eigen::FFT_REVERSE>(dims);

This will compute the inverse of the initial fft, and should be equal to tensor (modulo numerical noise). 

Hope this helps.



On Mon, Feb 15, 2016 at 11:19 AM, Chris <chris4hydsp@xxxxxxxxx> wrote:
Hi,

Is there any documentation on how to use tensor fft?  I've looked through the test module and see there is real fft, etc. and some permutation of some input parameters, but I haven't found any documentation on them.

Thanks,
Chris





--
Benoit


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/