Ответ 1
Ваш коэффициент нормализации исходит из попытки применить теорему Парсеваля для преобразования Фурье непрерывного сигнала к дискретной последовательности. На боковой панели статьи в Википедии о дискретном преобразовании Фурье обсуждается связь преобразования Фурье, ряда Фурье, дискретного преобразования Фурье и выборки с гребни Дирака.
Короче говоря, теорема Парсева, применяемая к DFT, не требует интеграции, но суммирование: a 2*pi
, которую вы создаете путем многократного на dt
и df
ваши суммы.
Заметьте также, что, поскольку вы используете scipy.fftpack.rfft
, то, что вы получаете, не является надлежащим образом ДПФ ваших данных, но только положительная его половина, так как отрицание будет симметрично ему. Поэтому, поскольку вы добавляете только половину данных, плюс 0
в терминах DC, там отсутствует 2
, чтобы добраться до 4*pi
, найденного @unutbu.
В любом случае, если datay
содержит вашу последовательность, вы можете проверить теорему Парсеваля следующим образом:
fouriery = fftpack.rfft(datay)
N = len(datay)
parseval_1 = np.sum(datay**2)
parseval_2 = (fouriery[0]**2 + 2 * np.sum(fouriery[1:]**2)) / N
print parseval_1 - parseval_2
Используя scipy.fftpack.fft
или numpy.fft.fft
, второе суммирование не нужно брать на себя странная форма:
fouriery_1 = fftpack.fft(datay)
fouriery_2 = np.fft.fft(datay)
N = len(datay)
parseval_1 = np.sum(datay**2)
parseval_2_1 = np.sum(np.abs(fouriery_1)**2) / N
parseval_2_2 = np.sum(np.abs(fouriery_2)**2) / N
print parseval_1 - parseval_2_1
print parseval_1 - parseval_2_2