Используя scipy.fftpack.fft, как интерпретировать числовой результат преобразования Фурье - PullRequest
0 голосов
/ 14 февраля 2019

Аналитическое преобразование Фурье синусоидального сигнала чисто мнимое .Однако при численном вычислении дискретного преобразования Фурье результат не является.

Tldr: Найти все ответы на этот вопрос здесь .

Поэтому рассмотрим следующий код

import matplotlib.pyplot as plt
import numpy as np
from scipy.fftpack import fft, fftfreq

f_s = 200 # Sampling rate = number of measurements per second in [Hz]
t = np.arange(0,10000, 1 / f_s)
N = len(t)
A = 4 # Amplitude of sinus signal 
x = A * np.sin(t)
X = fft(x)[1:N//2]
freqs = (fftfreq(len(x)) * f_s)[1:N//2]

fig, (ax1,ax2) = plt.subplots(2,1, sharex = True)
ax1.plot(freqs, X.real, label = "$\Re[X(\omega)]$")
ax1.plot(freqs, X.imag, label = "$\Im[X(\omega)]$")
ax1.set_title("Discrete Fourier Transform of $x(t) = A \cdot \sin(t)$")
ax1.legend()
ax1.grid(True)

ax2.plot(freqs, np.abs(X), label = "$|X(\omega)|$")
ax2.legend()
ax2.set_xlabel("Frequency $\omega$")
ax2.set_yscale("log")
ax2.grid(True, which = "both")
ax2.set_xlim(0.15,0.175)
plt.show()

figure

Понятно, что абсолютное значение | X (w) |может быть использовано как хорошее приближение к аналитическому результату.Однако мнимое и действительное значение функции X (w) различны.Уже другой вопрос о СО упоминал этот факт, но не объяснял почему.Так я могу использовать только абсолютное значение и фазу?

Другой вопрос - как Амплитуда связана с числовым результатом.Математически говоря, это должен быть интеграл по кривой | X (w) |делится на нормализацию (которая, насколько я понял, должна быть задана как N), то есть приблизительно на

A_approx = np.sum(np.abs(X)) / N
print(f"Numerical value: {A_approx:.1f}, Correct value: {A:.1f}")

Числовое значение: 13,5, Правильное значение: 4,0

Кажется, это не так.Есть идеи?Идеи?

Смежные вопросы, которые не помогли: здесь и здесь .

1 Ответ

0 голосов
/ 14 февраля 2019

БПФ не дает ожидаемого результата, поскольку он имеет конечную длину и, таким образом, больше похож на преобразование Фурье прямоугольного окна на вашей синусоиде.Длина и расположение этого прямоугольного окна будут влиять на фазу и амплитуду результата БПФ.

...