前一篇文中是通过构造epochs,绘出脑电图,但今天看到一个博客可以构造raw,并绘出脑电图(绘出脑电图只是一个起点)构造RawArray数据结构,我是跟着这学的。
不过,我按着博客写的过程复现在.mat文件中时,出现了不一样的问题,显示的脑电图是下面这样的,看起来就觉得不对。
不过 ,如果将构造RawArray数据结构中的代码ch_types = [‘eeg’, ‘eeg’, ‘eeg’]给去掉,info = mne.create_info(ch_names=ch_names,sfreq=sfreq,ch_types=ch_types)里面的ch_types=ch_types也要去掉。这样输出的脑电图是正确的,看下图。
不过这也导致了一个问题,这样构造出的raw虽能画出正确的图,但是不能利用mne库进行 滤波,ica等一些其他处理,我的本意是要利用mne库进行ica处理去除脑电中的伪迹。
通过分析.gdf格式的脑电数据时,发现了一个特有意思的点。那就是数都特别的小。
而从.mat文件中获得达到脑电数据都很大。
这我就想到可能是从.mat获得的数太大了。我就将.mat的几个通道的数据同时除以100000000,让.mat中的数据尽量也这么小。下图就是处理后的脑电数据,
下面的图就是脑电数据经过上述方法处理后输出的脑电图,下面这个图和上面的第二个图比对起来还是相似的,成功的输出脑电图,可以通过这张图,比对经过滤波和ica等一些处理的前后变化。
下面这个代码 是输出第一张图片。
##没加类型标签
import os
import os.path as op
import mne
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.io
path=r'E:\软件安装\python1111111111111111\dataset' \
r'\2008_BCI_Competition_IV\BCI_Competition_IV_dataSet 1\BCICIV_calib_ds1a.mat'
raw_data=scipy.