Понимание результатов метода быстрого преобразования Фурье - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь разобраться с выводом, созданным библиотекой 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()

enter image description here

enter image description here

enter image description here

Сигнал явно содержит некоторые частоты, и я ожидал, что они будут видны с выхода FFT.

Что яделать неправильно?

1 Ответ

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

При использовании np.fft.fft необходимо убедиться, что ваши данные равномерно распределены, в противном случае выходные данные будут неточными.Если они не расположены равномерно, вы можете использовать периодограммы LS, например: http://docs.astropy.org/en/stable/stats/lombscargle.html. Или посмотреть на неравномерное fft.

О графиках: я не думаю, что вы делаете что-то явнонеправильно.Ваш сигнал состоит из сигнала с периодом порядка 100, поэтому вы можете ожидать сильную частоту сигнала около 1/period=0.01.Это то, что видно на ваших графиках.Сигналы во временной области не так синусоидальны, поэтому ваш пик в частотной области будет размытым, как видно на графиках.

...