Оцените частоту по БПФ из данных о напряжении и времени с помощью кода Питона - PullRequest
0 голосов
/ 24 января 2019

Я хочу оценить частоту, выполнив преобразование Фурье на основе данных о напряжении и времени (см. Ссылку ниже) Когда я выполнил fft с ноутбуком Jupyter.

Соотношение между напряжением и временем является первым графиком на рисунке ниже. Насколько это видно, пик достигает примерно 2 Гц, но он не будет таким, как ожидалось. Я думаю, что есть проблема с кодом, но я не знаю, насколько я думал, поэтому я хотел бы, чтобы вы сказали мне.

test_data_middle = pd.read_csv("data.CSV")
x = test_data_middle["time"]
y = test_data_middle["volt"]
N = len(y)
dt = x[1]-x[0]

t = np.arange(0,N*dt,dt)
#minus Y.mean() to remove DC offset
Y = np.array(y)
Y_block_offset = Y - Y.mean()


F = np.fft.fft(Y_block_offset)
Amp = np.abs(F)
freq = np.fft.fftfreq(N,d=dt)

#PLot
plt.figure(figsize=(18,3),facecolor="white")
plt.plot(x,Y_block_offset,'b-', linewidth=1)
plt.xlabel('Time')
plt.ylabel('Volt')
plt.grid(True)

#FFT graph
fig, ax = plt.subplots(nrows=4, sharex=True, figsize=(6,6))
ax[0].plot(F.real, label="Real part")
ax[0].legend()
ax[1].plot(F.imag, label="Imaginary part")
ax[1].legend()
ax[2].plot(freq, label="Frequency")
ax[2].legend()
ax[3].plot(Amp, label="Amp")
ax[3].legend()
ax[3].set_xlabel("Number of data")

plt.show()

изображение данных исследования

...