From e5e412ac09fd9e0187ccabc741a7ff213a6edf06 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 31 Mar 2016 14:01:41 +0300 Subject: [PATCH] add fft calc example --- docs/fft.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/fft.py diff --git a/docs/fft.py b/docs/fft.py new file mode 100644 index 0000000..abfe2b7 --- /dev/null +++ b/docs/fft.py @@ -0,0 +1,35 @@ +import numpy as np +import matplotlib.pyplot as plt +import scipy.fftpack + +# Fe = sample rate +# N = samples count +def plot(Fe, N, x, y): + plt.subplot(2, 1, 1) + plt.plot(x, y) + + yf = scipy.fftpack.fft(y) + xf = np.linspace(0.0, Fe/2, N/2) + + plt.subplot(2, 1, 2) + plt.plot(xf, 2.0/N * np.abs(yf[:N/2])) + plt.show() + +def sample(): + Fe = 1000 + N = Fe + x = np.linspace(0.0, 1.0, N) + y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) + + plot(Fe, N, x, y) + +def real_sound_weave(freqHz): + Fe = 16000 + durationMs = 100 + N = Fe * durationMs / 1000 + x = np.linspace(0.0, N, N) + y = np.sin(2.0 * np.pi * x / (Fe / float(freqHz))) * 0x7FFF + + plot(Fe, N, x, y) + +real_sound_weave(4500)