如果我要比较 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');
画出来的效果
题外话
%开始画图
plot(time,frontal);
%但是我们还需要标注0点,再画一根垂直于x轴的直线
hold on;
x=zeros(1,385);%注意横坐标一直是0
y=linspace(-30,30,385);%这一句可以用来修改坐标轴的刻度显示
plot(x,y,'r')
如果是上面那样画,图就是这样
下面把计算顶区的代码补上,同时画出两个区域的比较图
%%
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');