【发布时间】:2025-12-09 19:15:02
【问题描述】:
我是信号处理方面的新手,遇到过一种情况,我不确定它是否正确。请纠正我,然后我会更新更多细节。
我的数据是here
我从手机(三星 Galaxy Note 2,采样率 $\约 99 Hz$)获取了加速度计信号。我想分析从 $0.3 Hz$ 到 $5.0 Hz$ 的频率
我的程序如下:
-
组合:假设一个传感器产生 3 个通道 $x$、$y$、$z$。组合是产生一个新的通道 $v = \sqrt{(x * x + y * y + z * z)}$
-
执行中值滤波:使信号平滑
-
黄油价值过滤器:我的截止值是从 $0.3 Hz$ 到 $5.0 Hz$
-
快速傅里叶变换
下图是我的 120 个时间点片段的演示,分 4 个步骤:(可以在我的 video 进行更多探索)
我观察到第 3 步和第 4 步的结果没有变化,而信号随时间变化
我的问题是有什么我可以确定这个结果是否正确?提前致谢
以下是我的代码用于应用过滤器
from __future__ import division
import numpy as np
from numpy.fft import rfft, rfftfreq
from numpy import absolute
import matplotlib.pyplot as plt
from scipy.signal import medfilt, hilbert
import pandas as pd
chunk = 120
LOW_CUT = 0.3
HIGH_CUT = 5.0
FS = 99
freqs = rfftfreq(chunk, 1 / FS)
_accel = pd.read_csv('data.csv')
for k, g in _accel.groupby(np.arange(len(_accel)) // chunk):
_v = g['v'].values
_v = medfilt(_v, 7)
_v = butter_bandpass_filter(_v, LOW_CUT, HIGH_CUT, FS, order=4)
v = 1 / chunk * absolute(rfft(_v))
plt.stem(freqs, v)
更新1另一个下载数据的链接https://1drv.ms/u/s!At6qHz_a5mXhgp1KcAYpvsiJeTXsmg
update 2更新了代码FS = 99中的采样率
更新 3 再次将块大小增加到 512,plotted 数据。制作了结果视频without bandpass
【问题讨论】:
-
你能在某处发帖
data.csv吗? -
FS到底是什么? -
我已经更新了,FS = 99
标签: python signals fft sensors