Привет,
нужно получить спектр частот с микрофона, и для этого разобраться с FFT.
Ряд Фурье
http://rghost.ru/53785377/image.png
В другой форме
http://rghost.ru/53785428/image.png
Так как все функции уже написанны, юзаю готовую библитотеку для питона numpy
>>> np.fft.fft([1, 2, 1, 0, 1, 2, 1, 0])
array([ 8.+0.j, 0.+0.j, 0.-4.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+4.j,
0.+0.j])
скормил fft 8 точек искомой функции, получил 8 комплексных чисел вида a + b*j, те можно получить амплитуду для каждой составляющей
A = sqrt(a^2+b^2) (вторая пикча)
А теперь эти амплитуды нужно сопоставить каким-то частотам. Тут я и застрял. По логике вещей частота должна соотвествоать ее индексу в массиве (ω,2ω,3ω)
Но нашлась функция fft.fftfreq, на вход получающая количество точек.
>>> np.fft.fftfreq(8)
array([ 0. , 0.125, 0.25 , 0.375, -0.5 , -0.375, -0.25 , -0.125])
Откуда эти цифры? ЯННП.
Так или иначе эти частоты как то должны быть связанны с частотой дискретизации, но понять как не могу.
Доки
http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fft.html#numpy....