python - 如何在 python 中计算 PSD、中值频率和平均频率?
问题描述
我正在尝试使用滑动窗口从 python 上的 EMG 数据中提取频率特征。我对频率分析没有太多的了解,所以如果我有一些错误的概念,我提前道歉。
我正在尝试遵循本网站的定义:
我的问题是我是否正确地执行了计算,如果不是,我该如何进行计算?
Windows_Size = 0.125
Overlap = 0.5
Bins = 256
START, END = df_filtered['Time'].min(), df_filtered['Time'].max()
Fs = 2000 #EMG Sampling Frequency
P = 1.0 / Fs
Windows = np.arange(START + Windows_Size, END, Windows_Size * (1 - Overlap))
FREQ = []
for w in WINDOWS:
win_start, win_end = w - Windows_Size, w
for var in ['Biceps_Femoris_Sq_Correct']:
value = df_filtered.loc[(win_start <= df_filtered['Time']) & (df_filtered['Time'] < win_end), var].values
fft = np.fft.fft(value * np.hamming(value.shape[0]), n=Bins)[1:Bins//2]
freq = np.fft.fftfreq(Bins, P)[1:Bins//2]
amp = np.abs(fft)
energy = amp ** 2 # Is this the right way to calculate power spectrum?
median_freq = energy/2
#mean_freq = EMG power spectrum is divided into two regions with equal
#amplitude... is this right?
mean_freq = np.sum(energy * freq) / np.sum(energy)
平均频率计算为 EMG 功率谱的乘积之和,频率除以功率谱的总和。这是计算平均频率的正确方法吗?
解决方案
推荐阅读
- javascript - 为什么我登录时我的登录页面加载缓慢
- azure - 添加 Azure Kinect 时的身体跟踪
- go - TCP 服务器无法识别已关闭的物联网设备
- angular - 使用 ngModel 和 ngValue Angular 4 和 JHipster 时获取未定义的值
- wpf - WPF 绑定未引发数据模板类型扩展器的属性更改事件
- c - 为什么我会收到陷阱 14 消息,其中动态数组保存在堆栈中
- java - 如何使用 Ajax 将 system.out.println("xyz") 语句从逻辑方法打印到 GUI
- html - 透明图像以查看彩色背景
- reactjs - nextjs 重定向默认路由
- linux - 通过终端发送 Ngrok 随机端口号