try something like FFT or DFT? very intensive