scijs / fourier-transform

Minimalistic and efficient FFT implementation
167 stars 19 forks source link

Readme notes on input size #1

Closed rreusser closed 8 years ago

rreusser commented 8 years ago

Great work! I've been wishing for a nice clean implementation for a long time! One small thing: Is it possible to clarify in the readme whether this works non-power-of-two sizes? It wasn't immediately clear to me from either the readme or the source which sizes are permitted (or if there are restrictions at all). Thanks!

dy commented 8 years ago

Yes, definitely. Done. Probably it also needs clarifying what to do in case if user needs NPOT FFT.

dy commented 8 years ago

Elaborated a bit, referenced to ndarray for NPOT case. Thanks!

rreusser commented 8 years ago

Thanks! This is great! At risk of getting off-topic, for complex numbers, I kinda liked mikola's original ndfft implementation without the extra weight of ndarray since it's definitely overkill where a reasonably fast, 1-d always-power-of-two fft is needed (shameless example: complex-deriv-fornberg)

Long story short, there are maybe a couple more pieces (complex fft, NPOT) that could be harvested/repurposed from various MIT-licensed sources and cleaned up/made presentable. Thoughts on further directions:

Bottom line, there are lots of similar use cases for which ndarray of dsp.js or the other modules may be kinda heavy or otherwise not quite right, so could be useful to enumerate a few more and come up with some nice streamlined implementations like this module.

Just thoughts. Thanks again!

dy commented 8 years ago

Yes, I was planning initially to implement FFT of dsp.js for complex numbers, but decided that I had no use-cases for that moment. Yes, I am down for these implementations. It would be nice, I guess, to combine them under the same simple API:

ft(real, complex?);
ft(npotReal);