脑电实验--MATLAB叠加平均代码

脑电实验中会有“提取epoch”这个操作,epoch是从连续的脑电信号中提取一些特定时间窗口的信号,这个时间片段被锁定到某个事件(例如刺激)中。

提取完epoch后,可以先进行叠加平均再计算指标,也可以先计算指标再进行叠加平均。二者在叠加平均这一步代码上的区别就是加载的文件格式不同,前者加载的是.set文件,后者加载的是.mat文件。

下面以我实验的项目为准,介绍第二种(先计算指标再叠加平均)。

首先,在提取epoch那步,得到了1800个epoch,经指标计算(Hermes工具包算的COH指标)得到一个mat文件,该文件打开后包含1800个32*32*513single,也即指标对每个epoch进行了计算。(这里“32*32*513single”,是一个三维矩阵,我对其先进行了降维操作,再叠加,再平均。)

【步骤】

第一步:对 32*32*513single 的矩阵进行降维。

n = 1; 
mat_COH = zeros(32,32);  % 定义一个空矩阵
A = load('D:\...\T4.mat');
for i = 1:1800            % 32*32*513single变成32*32并且保存
    mat_COH = A.indexes.COH.data{1,i}; 
    coh = mean(mat_COH, 3);    % 降维
    save(['D:\...\降维\avg_',num2str(n),'.mat'], 'coh'); # 保存了1800个32*32的矩阵
    n = n+1;
end

第二步:叠加平均

for i=1:15   % 叠加的次数。一共1800个矩阵,每120个叠加一次,需要叠加15次。
    avg = zeros(32,32,120); % 定义一个三维空矩阵
    for j=1:120    % 每120个叠加一次
        B = load(['D:\...\降维\avg_',num2str((i-1)*120 + j),'.mat']);
        avg(:,:,j) = B.coh(:,:); % 叠加 
    end  
    coh = mean(avg, 3);   % 平均
    save(['D:\...\每120平均_15个人\avg_',num2str(i),'.mat'], 'coh');
end

  【注】在叠加那一步, “先叠加平均再计算指标”的话,加载的set文件也是这种三维数据,代码是 “avg_S6(:,:,j) = data_S6(:,:,(i-1)*120 + j)”,前面是三维后面也是三维,却可以直接叠加?俺不懂。

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值