Я пытаюсь разобраться с выводом, созданным библиотекой python FFT.
У меня есть база данных sqlite, в которую я записал несколько серий значений АЦП.Каждая серия состоит из 1024 выборок, взятых с частотой 1 мс.
После импорта наборов данных я нормализую его и запускаю int с помощью метода fft
.Я включил несколько графиков исходного сигнала по сравнению с выходом БПФ.
import sqlite3
import struct
import numpy as np
from matplotlib import pyplot as plt
import time
import math
conn = sqlite3.connect(r"C:\my_test_data.sqlite")
c = conn.cursor()
c.execute('SELECT ID, time, data_blob FROM log_tbl')
for row in c:
data_raw = bytes(row[2])
data_raw_floats = struct.unpack('f'*1024, data_raw)
data_np = np.asarray(data_raw_floats)
data_normalized = (data_np - data_np.mean()) / (data_np.max() - data_np.min())
fft = np.fft.fft(data_normalized)
N = data_normalized .size
plt.figure(1)
plt.subplot(211)
plt.plot(data_normalized )
plt.subplot(212)
plt.plot(np.abs(fft)[:N // 2] * 1 / N)
plt.show()
plt.clf()
Сигнал явно содержит некоторые частоты, и я ожидал, что они будут видны с выхода FFT.
Что яделать неправильно?