template<typename Sample>
class signalsmith::spectral::WindowedFFT< Sample >
An FFT with built-in windowing and round-trip scaling.
This uses a Modified Real FFT, which applies half-bin shift before the transform. The result therefore has N/2
bins, centred at the frequencies: (i + 0.5)/N
.
This avoids the awkward (real-valued) bands for DC-offset and Nyquist.
|
| WindowedFFT (int size, int rotateSamples=0) |
|
template<class WindowFn > |
| WindowedFFT (int size, WindowFn fn, Sample windowOffset=0.5, int rotateSamples=0) |
|
std::vector< Sample > & | setSizeWindow (int size, int rotateSamples=0) |
| Sets the size, returning the window for modification (initially all 1s) More...
|
|
template<class WindowFn > |
void | setSize (int size, WindowFn fn, Sample windowOffset=0.5, int rotateSamples=0) |
| Sets the FFT size, with a user-defined functor for the window. More...
|
|
void | setSize (int size, int rotateSamples=0) |
| Sets the size (using the default Blackman-Harris window) More...
|
|
const std::vector< Sample > & | window () const |
|
int | size () const |
|
template<class Input , class Output > |
void | fft (Input &&input, Output &&output) |
| Performs an FFT (with windowing) More...
|
|
template<class Input , class Output > |
void | fftRaw (Input &&input, Output &&output) |
| Performs an FFT (no windowing or rotation) More...
|
|
template<class Input , class Output > |
void | ifft (Input &&input, Output &&output) |
| Inverse FFT, with windowing and 1/N scaling. More...
|
|
template<class Input , class Output > |
void | ifftRaw (Input &&input, Output &&output) |
| Performs an IFFT (no windowing or rotation) More...
|
|