awelkie / RustFFT

A mixed-radix FFT library written in pure Rust
Apache License 2.0
189 stars 18 forks source link

Can multidimensional FFT be performed? #39

Closed astrojhgu closed 5 years ago

astrojhgu commented 6 years ago

Or would it be supported in the future?

Thanks.

ejmahler commented 6 years ago

You can compute a multidimensional FFT, but you’ll have to do it manually. There is no library support for it. A 2D FFT should be easy, make a FFT instance for the size of each axis, and an array with width * height elements. Iterate over your array in chunks of size width, and compute your width-size FFT on each chunk. Then transpose your 2D array, and iterate again in chunks of size height and compute your height-size FFT on each chunk. After that, you probably want to transpose again.

The same idea is true for higher dimensions, with one FFT pass per dimension.

Take a look at algorithm/mixed_radix.rs it does almost this exact “iterate and transpose” algorithm, although it does a little extra work that you won’t need

On Fri, Oct 26, 2018 at 4:50 AM Gu Junhua notifications@github.com wrote:

Or would it be supported in the future?

Thanks.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/awelkie/RustFFT/issues/39, or mute the thread https://github.com/notifications/unsubscribe-auth/ABGmeumAaG2gpT2D-3ibVelseL8DkfWXks5uovb4gaJpZM4X8E_t .

jimrybarski commented 6 years ago

Yes, the ofuton crate uses rustfft to provide N-dimensional FFT.

astrojhgu commented 6 years ago

Thanks @ejmahler and @jimrybarski .