首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算蟒蛇的PSD、中频和平均频率?

如何计算蟒蛇的PSD、中频和平均频率?
EN

Stack Overflow用户
提问于 2020-05-12 08:02:08
回答 1查看 1.7K关注 0票数 1

我正在尝试用滑动窗口从python上的EMG数据中提取频率特性。我没有太多的频率分析知识,所以如果我有一些错误的概念,我会提前道歉。

我试图遵循这个网站的定义:

MDF

更多信息

我的问题是我是否正确地进行了计算,如果没有,我如何进行计算?

代码语言:javascript
复制
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) 

平均频率作为肌电图功率谱的乘积之和计算,频率除以功率谱的总和。这是计算平均频率的正确方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-08 10:06:51

MDF应该类似于

代码语言:javascript
复制
energy_cumsum = np.cumsum(energy)
MDF = freq[np.where(energy_cumsum>np.max(energy_cumsum)/2)[0][0]]   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61746606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档