【发布时间】:2019-02-25 22:12:39
【问题描述】:
我试图理解 python FFT 库产生的输出。
我有一个 sqlite 数据库,其中记录了几个系列的 ADC 值。每个系列由 1024 个采样组成,采样频率为 1 ms。
导入数据序列后,我对其进行规范化并通过fft 方法运行 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 输出中看到。
我做错了什么?
【问题讨论】:
-
这是有道理的。结果不是我期望看到的,所以我有一种感觉,我把事情搞砸了。谢谢!
-
欢迎。可能有用:dsp.stackexchange.com
-
想到了一个新东西,我删除了我的评论并将其添加为答案。