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

如果我要比较 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');

画出来的效果

数据处理-用于不同区域比较_第1张图片
untitled.jpg

题外话

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

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


数据处理-用于不同区域比较_第2张图片
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

数据处理-用于不同区域比较_第3张图片
untitled.jpg

你可能感兴趣的:(数据处理-用于不同区域比较)