python - 如何计算频带的平均值(mu,8-13Hz)?
问题描述
我需要计算 mu 频带(8-13Hz)的平均功率。我想用傅立叶变换来做,但我没有得到正确的结果。
我正在做什么对于这个问题并不重要,但它可能有助于理解代码:我有许多参与者的脑电图记录,想象左手或右手运动,我想计算他们在休息时的平均 mu 功率(不是想象运动)和它们在想象期间的平均mu功率(成像左/右手运动)然后使用公式:(想象中的力量-休息时的力量)/休息时的力量
但是,问题是,我几乎只得到正值,但它们应该是负值,所以我认为傅里叶变换存在问题。有人可以帮忙吗?
我的代码如下所示:
# left trial (C4)-------------------------------------------------
fs = 250.
lrest = np.array(left_df.loc[left_df['Rest/Imagery'] == 'rest','C4'])
limagery = np.array(left_df.loc[left_df['Rest/Imagery'] == 'imagery','C4'])
low,high = 8,13 #mu waves
### rest period
#get amplitude of FFT
fft_vals = np.absolute(np.fft.rfft(lrest))
#get frequencies for amplitude in Hz
fft_freq = np.fft.rfftfreq(len(lrest),1.0/fs)
#take mean of fft amplutide for the mu band
freq_ix = np.where((fft_freq >= low) & (fft_freq <= high))
meanlrest = np.mean(fft_vals[freq_ix])
### imagery period
fft_vals = np.absolute(np.fft.rfft(limagery))
fft_freq = np.fft.rfftfreq(len(limagery),1.0/fs)
freq_ix = np.where((fft_freq >= low) & (fft_freq <= high))
meanlimg = np.mean(fft_vals[freq_ix])
ERDS_left = (meanlimg - meanlrest)/meanlrest
ERDS_subject_left_fourier.append(ERDS_left)
# right trial (C3)--------------------------------------
rrest = np.array(right_df.loc[right_df['Rest/Imagery'] == 'rest','C3'])
rimagery = np.array(right_df.loc[right_df['Rest/Imagery'] == 'imagery','C3'])
### rest period
fft_vals = np.absolute(np.fft.rfft(rrest))
fft_freq = np.fft.rfftfreq(len(rrest),1.0/fs)
freq_ix = np.where((fft_freq >= low) & (fft_freq <= high))
meanlrest = np.mean(fft_vals[freq_ix])
### imagery period
fft_vals = np.absolute(np.fft.rfft(rimagery))
fft_freq = np.fft.rfftfreq(len(limagery),1.0/fs)
freq_ix = np.where((fft_freq >= low) & (fft_freq <= high))
meanlimg = np.mean(fft_vals[freq_ix])
ERDS_left = (meanrimg - meanrrest)/meanrrest
ERDS_subject_right_fourier.append(ERDS_right)
解决方案
推荐阅读
- php - Docker Laravel 迁移报错 Illuminate\Database\QueryException SQLSTATE[HY000]
- c++ - 您可以在不使用任何包含的情况下在 C++ 中输出数据吗?
- terraform - google_sql_database_instance 使用私有 IP 创建多个实例时等待创建实例时出错
- json - 奇怪的 KeyError (Python)
- css - 媒体使用开发工具查询移动/桌面的不同可视化
- javascript - Django - 我的静态文件放错地方了吗?
- c++ - 在 Win32 C++ 桌面应用程序中读取进程的“stdout”输出
- pine-script - 如何在松木上制作更薄的新线
- python - 使用日志分析进行数据分类
- php - 使用php邮件功能发送电子邮件