绘制CSP的patterns矩阵图

最近在使用FBCSP处理数据,然后就想着看看处理后的样子,用地形图的形式表现出来,但是没有符合自己需求的函数可以实现,就自己尝试的实现了一下,这里记录一下,方便以后查阅。

绘制CSP的patterns矩阵图

对数据做了FBCSP处理,但是想画一下CSP计算出来的patterns的地形图,并按照频带绘制成矩阵的样子,如下图所示。

在这里插入图片描述

然后开始查mne的CSP是如何使用的,就看到了这篇文章Motor imagery decoding from EEG data using the Common Spatial Pattern (CSP),在文章中发现了下图的代码部分,发现用函数是可以绘制CSP的patterns地形图的:

在这里插入图片描述
但是我想把图片竖着排列,这了一圈也没有找到参数可以设置,然后又看了CSP的相关的方法mne.decoding.CSP,也没有发现合适函数可以拿到CSP的patterns参数:

在这里插入图片描述

就想着,既然没有参数和函数可以选择,那可不可以改一下官方的库,来实现我想要的效果,就看了一下plot_patterns的源代码,结果发现了惊喜,这个函数里面的内容很简单,如下图所示:

在这里插入图片描述

从上图中我们可以看到,plot_patterns的实现还是用的plot_topomap函数,这个函数我们在这篇博客使用自定义数据绘制脑地形矩阵图已经研究的很明白了。
然后还有一个很重要的就是,我们看到了patterns这个参数,并且函数中把patterns转换成了Evoked对象,ok这也是我们可以处理的,那么我们只需要看一下patterns参数的由来:

在这里插入图片描述

可以从上图中看到,patterns参数来自于一个函数,这个函数我们就不需要关心了,我们的到的最关键的信息时,patterns参数是CSP类的一个参数,那么我们就可以用下面的语句来得到这个参数:

patterns = csp.patterns_.T

ok,现在我们的问题就已经解决了,我们直接使用plot_topomap函数来绘制patterns参数的数值就可以了。具体的代码我放在后面,现在我们再来看一下Patterns vs. filters的内容。为什么呢,因为我们在看CSP的方法的时候,我们看到了这两个方法plot_filtersplot_patterns,我们主要使用的plot_patterns方法,那么另一个方法存在的意义是什么呢?我们就看了一下plot_filters方法的使用例子,发现了如下图的内容:

Decoding (MVPA)

在这里插入图片描述

然后根据指引我们转到了这篇文章Linear classifier on sensor data with plot patterns and filters,然后就看到了如下的内容:

在这里插入图片描述
其实他也没有集体的说明两者的区别,就给了如下的三句话:

  1. patterns which are more neurophysiologically interpretable than the classifier filters (weight vectors).

  2. The patterns explain how the MEG and EEG data were generated from the discriminant neural sources which are extracted by the filters.

  3. Note patterns/filters in MEG data are more similar than EEG data because the noise is less spatially correlated in MEG than EEG.

ok,到此相关的内容就都介绍完了,然后就是代码实现了,我么使用的FBCSP,所以我们先进行分频带

### Class providing methods to carry out filtering of EEG data to be used for FBCSP.
class FilterBank:
    '''
    Class providing methods to carry out filtering of EEG data to be used for FBCSP.

    Args:
        fs: Sampling frequency (int or float)
        f_trans: Transition bandwidth (int or float) (Default=2)
        f_pass: The pass bands of the frequency bands used in FBCSP (numpy.ndarray) (Default=arange(0,40,4))
        f_width: The width of each frequency band (int) (Default=4)
        g_pass: The maximum loss in the passband (dB) (int or float) (Default=3)
        g_stop: The minimum attenuation in the stopband (dB) (int or float) (Default=30)
        filter_coeff: Contains the filter coefficients 'b' and 'a' (dict) (Default={})
    '''
    def __init__(self, fs):
        self.fs = fs
        self.f_trans = 1
        self.f_pass = np.arange(0,40
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值