Signal Analysis
import IPython.display as disp
def closestPowerOfTwo(n):
n = n - 1
while n & n - 1:
n = n & n - 1
return n << 1
ndata = data_trumpet.shape[0]
n2 = closestPowerOfTwo(ndata)
data_trumpet = np.pad(data_trumpet, (n2-ndata) // 2)
#plt.plot(data_trumpet)
display(disp.Audio(data_trumpet, rate=sampling_rate))
F = fft_dif_recursive(data_trumpet)
N = len(data_trumpet)
dx = 1. / sampling_rate
freq = 1.0 / (N * dx) * np.arange(N)
plt.plot(freq[:4000], np.abs(F)[:4000]**2)
F_numpy = np.fft.fft(data_trumpet)
freq_numpy = np.fft.fftfreq(N, dx)
plt.plot(freq_numpy[:10000], np.abs(F_numpy)[:10000]**2)