-

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  11 随笔 :: 0 文章 :: 0 评论 :: 1003 阅读
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
 
def calculate_fatigue(emg_data, sample_rate):
    """Calculate muscle fatigue using EMG data."""
     
    # Calculate the root mean square (RMS) of the EMG data
    rms = np.sqrt(np.mean(np.square(emg_data)))
     
    # Calculate the mean frequency (MF) of the EMG data using a Fourier transform
    fft_data = np.fft.fft(emg_data)
    freqs = np.fft.fftfreq(len(emg_data), 1/sample_rate)
    mf = np.sum(np.abs(fft_data) * freqs) / np.sum(np.abs(fft_data))
     
    # Calculate the median frequency (MD) of the EMG data using a Fourier transform
    power_spectrum = np.square(np.abs(fft_data))
    md = freqs[np.argmax(power_spectrum[:len(power_spectrum)//2])]
     
    # Calculate the fatigue index (FI) using the ratio of the RMS value at the end of exercise
    # to the RMS value at the beginning of exercise
    fi = rms[-1] / rms[0]
     
    # Calculate the fatigue level (FL) using the formula FL = (MF - MD) / FI
    fl = (mf - md) / fi
     
    return fl

 

emg_data 是肌电数据的一维NumPy数组,sample_rate 是采样频率。

先计算肌电数据的均方根(RMS)值,然后使用傅里叶变换计算肌电数据的平均频率(MF)和中位数频率(MD)。

之后计算肌电数据的疲劳指数(FI),并使用MF、MD和FI计算肌肉疲劳度(FL)。

posted on   p_xcn  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示