美文网首页matlab学习
数据处理-用于不同区域比较

数据处理-用于不同区域比较

作者: 李药师_hablee | 来源:发表于2019-02-27 15:59 被阅读0次

    如果我要比较 frontal 和 parietal 的 ERP 波形该怎么做?

    如果我的数据采样率是 128 Hz,而我选的epoch在marker前后的区间为[-1,2],那么我的 frame per epoch 就是 3 ÷ (1/128) = 384;就是每个通道是 384 个点

    即得到的数据是 32通道 × 384(frame per epoch)× 40个epoch(取决于我的marker数)

    所以我先要得到二维下 frontal 和 parietal 的数据

    • 而我首先要把 40 个 epoch的数据进行平均,变成 32 × 384 的数据
      举个例子代码
    %%
    a(:,:,1)=[2 3 1;2 4 1];
    a(:,:,2)=[0 3 1;3 5 1];
    a(:,:,3)=[1 3 1;4 3 1];
    %创建a为 2*3*3 的三维矩阵
    
    %%
    a_23_sum=a(:,:,1)+a(:,:,2)+a(:,:,3);
    %访问a的三页数据加起来
    
    a_ave=a_23_sum/3;
    %求平均;这个时候就把数据转成 2*3 的二维平均後的数据了
    

    让我们写成循环的样子

    %%
    a(:,:,1)=[2 3 1;2 4 1];
    a(:,:,2)=[0 3 1;3 5 1];
    a(:,:,3)=[1 3 1;4 3 1];
    %创建a为 2*3*3 第三维有3页的三维矩阵
    
    %%
    a_23_sum=zeros(2,3);
    %创建0矩阵用于相加
    for i=1:1:3
        a_23_sum=a_23_sum+a(:,:,i);
    %访问a的三页数据加起来
    end
    
    a_ave=a_23_sum/3;
    %除以3页求平均;这个时候就把数据转成 2*3 的二维平均後的数据了
    

    所以如果要要把 40 个 epoch的数据进行平均,变成 32 × 384 的数据

    %%
    a_32_384_sum=zeros(32,384);
    %创建0矩阵用于相加
    for i=1:1:40
        a_32_384_sum=a_32_384_sum+EEG.data(:,:,i);
    %访问a的40页数据加起来
    end
    
    a_ave=a_32_384_sum/40;
    %除以40页求平均;这个时候就把数据转成 32*384 的二维平均後的数据了
    

    继续求 F3、F4、Fz的平均

    %%
    %如果3,4,5列代表前额,把第3、4、5行数据加起来
    frontal=(a_ave(3,:)+a_ave(4,:)+a_ave(5,:))/3;
    %由于时间是[-1,2],采样率是128 Hz,所以
    time=-1:1/128:2;
    %注意这个时候 time 的 size 是 1*385,所以我们需要在frontal数据后面添一个0
    frontal=[frontal 0];
    %这个时候 time-frontal 的数据维度就一致了
    
    %开始画图
    plot(time,frontal);
    %但是我们还需要标注0点,再画一根垂直于x轴的直线
    hold on;
    x=zeros(1,385);%注意横坐标一直是0
    plot(x,frontal,'r');
    

    画出来的效果

    untitled.jpg

    题外话

    %开始画图
    plot(time,frontal);
    %但是我们还需要标注0点,再画一根垂直于x轴的直线
    hold on;
    x=zeros(1,385);%注意横坐标一直是0
    y=linspace(-30,30,385);%这一句可以用来修改坐标轴的刻度显示
    plot(x,y,'r')
    

    如果是上面那样画,图就是这样


    untitled.jpg

    下面把计算顶区的代码补上,同时画出两个区域的比较图

    %%
    a_32_384_sum=zeros(32,384);
    %创建0矩阵用于相加
    for i=1:1:40
        a_32_384_sum=a_32_384_sum+EEG.data(:,:,i);
    %访问a的40页数据加起来
    end
    
    a_ave=a_32_384_sum/40;
    %除以40页求平均;这个时候就把数据转成 32*384 的二维平均後的数据了
    
    %%
    %如果3,4,5列代表前额,把第3、4、5行数据加起来
    frontal=(a_ave(3,:)+a_ave(4,:)+a_ave(5,:))/3;
    %由于时间是[-1,2],采样率是128 Hz,所以
    time=-1:1/128:2;
    %注意这个时候 time 的 size 是 1*385,所以我们需要在frontal数据后面添一个0
    frontal=[frontal 0];
    %这个时候 time-frontal 的数据维度就一致了
    
    %%
    %如果21,22,23列代表顶区,把第21,22,23行数据加起来
    parietal=(a_ave(21,:)+a_ave(22,:)+a_ave(23,:))/3;
    parietal=[parietal 0];
    
    
    %%
    %开始画图
    plot(time,frontal,'black',time,parietal,'b');
    %但是我们还需要标注0点,再画一根垂直于x轴的直线
    hold on;
    x=zeros(1,385);%注意横坐标一直是0
    y=linspace(-30,30,385);%这一句可以用来修改坐标轴的刻度显示
    plot(x,y,'r');
    
    

    输出图,图例的字体是 Consolas

    untitled.jpg

    相关文章

      网友评论

        本文标题:数据处理-用于不同区域比较

        本文链接:https://www.haomeiwen.com/subject/qvkfuqtx.html