我正在从以 200 Hz 采样的 X、Y 和 Z 加速度计传感器收集数据。3 个轴组合成一个称为“XYZ_Acc”的信号。我遵循了有关如何使用 scipy fftpack 库将时域信号转换为频域的教程。
我正在使用的代码如下:
from scipy.fftpack import fft
# get a 500ms slice from dataframe
sample500ms = df.loc[pd.to_datetime('2019-12-15 11:01:31.000'):pd.to_datetime('2019-12-15 11:01:31.495')]['XYZ_Acc']
f_s = 200 # sensor sampling frequency 200 Hz
T = 0.005 # 5 milliseconds between successive observation T =1/f_s
N = 100 # 100 samples in 0.5 seconds
f_values = np.linspace(0.0, f_s/2, N//2)
fft_values = fft(sample500ms)
fft_mag_values = 2.0/N * np.abs(fft_values[0:N//2])
Run Code Online (Sandbox Code Playgroud)
然后我绘制频率与幅度
fig_fft = plt.figure(figsize=(5,5))
ax = fig_fft.add_axes([0,0,1,1])
ax.plot(f_values,fft_mag_values)
Run Code Online (Sandbox Code Playgroud)
截屏: …
我正在尝试使用 Matplotlib 从 csv 文件中绘制时间序列数据。下面是 csv 文件的前几行。
YYYY-MO-DD HH-MI-SS_SSS,X,Y,Z
2019-12-15 11:01:35.000,-0.2937,0.8477,2.2274
2019-12-15 11:01:35.005,-0.2937,0.8477,2.2274
2019-12-15 11:01:35.010,-0.2937,0.8477,2.2274
2019-12-15 11:01:35.014,0.3231,-1.7574,-4.6244
2019-12-15 11:01:35.021,0.3231,-1.7574,-4.6244
2019-12-15 11:01:35.025,0.3231,-1.7574,-4.6244
2019-12-15 11:01:35.030,0.7319,-4.9294,-4.6236
2019-12-15 11:01:35.035,0.7319,-4.9294,-4.6236
Run Code Online (Sandbox Code Playgroud)
间隔为 5 毫秒 (200 Hz),文件包含一秒的数据(200 行)。我的目标是每 100 毫秒设置一次主要的 x-ticks,即:
35.000, 35.100, 35.200, ...., 35.800, 35.900
我尝试使用 dateFormatter 但无法管理。我怎样才能做到这一点?
#import packages
from matplotlib import pyplot as plt
from matplotlib import dates
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import pandas as pd
import numpy as np
#import math
%matplotlib inline
df = pd.read_csv("one-second.csv",index_col="YYYY-MO-DD HH-MI-SS_SSS",parse_dates=True)
fig_1, axes = plt.subplots(3, …Run Code Online (Sandbox Code Playgroud)