P300数据学习

import pandas as pd
import numpy as np
from scipy.io import loadmat
# AAS011R06.mat
m = loadmat('Data/P300/v2/AA001.mat')
m
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Nov 29 14:36:17 2001',
 '__version__': '1.0',
 '__globals__': [],
 'run': array([[3],
        [3],
        [3],
        ...,
        [8],
        [8],
        [8]], dtype=uint8),
 'trial': array([[  0],
        [  0],
        [  0],
        ...,
        [192],
        [192],
        [192]], dtype=uint8),
 'sample': array([[    0],
        [    1],
        [    2],
        ...,
        [28829],
        [28830],
        [28831]], dtype=uint16),
 'signal': array([[-1136,  -416,  -592, ...,  -816,  -496,  -624],
        [-1456,  -912,  -752, ...,   -48,   336,   -48],
        [-1888,  -912,  -480, ...,  -240,     0,    64],
        ...,
        [-1952, -2416, -2336, ..., -1376, -2096, -1168],
        [-2784, -2912, -2912, ...,   144,  -800,   -48],
        [-1872, -1168, -1264, ...,  1008,   304,   816]], dtype=int16),
 'TargetCode': array([[0],
        [0],
        [0],
        ...,
        [0],
        [0],
        [0]], dtype=uint8),
 'ResultCode': array([[0],
        [0],
        [0],
        ...,
        [0],
        [0],
        [0]], dtype=uint8),
 'StimulusTime': array([[51992],
        [51992],
        [51992],
        ...,
        [54165],
        [54165],
        [54165]], dtype=uint16),
 'Feedback': array([[0],
        [0],
        [0],
        ...,
        [0],
        [0],
        [0]], dtype=uint8),
 'IntertrialInterval': array([[1],
        [1],
        [1],
        ...,
        [1],
        [1],
        [1]], dtype=uint8),
 'Active': array([[1],
        [1],
        [1],
        ...,
        [1],
        [1],
        [1]], dtype=uint8),
 'SourceTime': array([[52082],
        [52082],
        [52082],
        ...,
        [54256],
        [54256],
        [54256]], dtype=uint16),
 'RunActive': array([[1],
        [1],
        [1],
        ...,
        [1],
        [1],
        [1]], dtype=uint8),
 'Recording': array([[1],
        [1],
        [1],
        ...,
        [1],
        [1],
        [1]], dtype=uint8),
 'IntCompute': array([[0],
        [0],
        [0],
        ...,
        [0],
        [0],
        [0]], dtype=uint8),
 'Running': array([[1],
        [1],
        [1],
        ...,
        [1],
        [1],
        [1]], dtype=uint8)}

P300 范式

  1. 6 x 6的字符矩阵

  2. 注意力一次集中到一个字符上

  3. 行和列以5.7Hz频率连续随机增强

  4. 6次行,6次列,分别有一行和一列包含目标字符,此时引起的反应,类似P300

v2数据采集

  1. 三个时间段的同一个受试者的信号,240Hz

  2. 每个会话:包含多个运行

  3. 每次运行:用户集中在一系列字符中。

  4. 每个字符:

    • 矩阵显示时间2.5s,此时字符强度相等 ==> 视为空白

    • 每一行和每一列被随机增强100ms,增强后,空白75ms

    • 每个字符重复12组增强15次,共计180次增强

    • 2.5s空白

    • 每次实验的单个通道信号量 = {2.5s + [(100+75) x 180 x 字符数]/1000 + 2.5s }x 240 Hz

v2信号处理文件(样例)

文件名:example.m

  • 该程序比较session10-run01数据集中,对目标与非目标刺激(即,包含/未包含所需字符的刺激)的响应

文件名:testclass.m

  • 使用一个非常简单的分类器来预测session12-run01中单词的第一个字符

  • 它在增强后使用Cz和310ms处的一个样本进行分类。 它确定目标字符为振幅最高的字符(Cz / 310ms)

  • 它针对session12中的单词01中的第一个字符执行此操作

最后更新于

这有帮助吗?