Skip to content

Klafyvel/AVR-FFT

Repository files navigation

Implementation of the FFT on Arduino

This is the companion repository for my blog post here. You'll find plenty of details there.

This directory contains several trials of implementing efficiently the Fast Fourier Transform (FFT) on Arduino. As a comparison, I took this implementation.

If you want to understand the basis of how to implement the FFT, I wrote a small tutorial here (English version is here). Currently, here are the benchmarks on the following test signal, with a varying number of points.

Test signal

Benchmarks

Benchmarks

Below is a list of the different implementation.

ExactFFT

This is a direct translation to C++ of the implementation in my tutorial.

Result of FFT for different input sizes

ApproxFFT

This is an implementation of the FFT by user abhilash_patel on Instructables.

It is there for comparison purpose only, as it is not very space-efficient.

Result of FFT for different input sizes

FloatFFT

A floating-point implementation of the FFT, using some rewriting of multiplications in ExactFFT, and some bit magic to accelerate float operations.

Featuring, but not limited to :

Result of FFT for different input sizes

Fixed16FFT

A 16-bits fixed-point implementation of the FFT on AVR.

Result of FFT for different input sizes

Fixed8FFT

An 8-bits fixed-point implementation of the FFT on AVR.

Result of FFT for different input sizes