У меня странная проблема с использованием класса numpy fft. У меня есть следующий бит тестового кода:
import numpy as np
import scipy.io.wavfile
import matplotlib.pyplot as plt
fs, a = scipy.io.wavfile.read('test.wav') # import audio file
spectrum = np.fft.fft(a) # create spectrum
b = np.real(np.fft.ifft(spectrum)) # reconstruct signal
# Print power of original and output signal
print(np.average(a**2))
print(np.average(b**2))
Он выводит:
1497.887578558565
4397203.934254291
Как и ожидалось для этих значений, выходной сигнал намного громче, чем входной. Документация для numpy .fft.ifft гласит:
"Эта функция вычисляет инверсию одномерного n-точечного дискретного преобразования Фурье, вычисленного с помощью fft. Другими словами, ifft (fft (a)) == a с точностью до цифры. "
Таким образом, сигнал должен быть почти одинаковым. И все же они, очевидно, нет. Что я тут не так делаю?