2014.10.25
从项目购置实验物品起,真正启动项目。
本日共完成从使用串口调试软件,通过蓝牙传输,读取Mindwave耳机读取到的五组脑电波原始数据(前进,后退,左转,右转,停下)。由于未能了解传输信号原理,每组信号经过处理,只记录了8个数据包(每个包中存在512个小包和1个大包)。每个小包中有8个16进制数据,每个大包中有36个。每个数据包的记录时间大约为1秒。
同时编写C程序对处理过的数据进行丢包检测和High与Low信号的处理(下面展示部分代码)。
for(j=0;j<8;j++)
{
for(i=0;i<513;i++)
{
fscanf(MWData,"%x %x %x",&Data[j][i].High,&Data[j][i].Low,&Data[j][i].CheckSum);
Data_z[j][i].checksum=Data[j][i].CheckSum;
if(Data[j][i].High==170&&Data[j][i].Low==170)
{
fseek(MWData,100L,1);
break;
}
//printf("第%d组第%d个 %x %x %x\n",j,i,Data[j][i].High,Data[j][i].Low,Data[j][i].CheckSum);
Data_z[j][i].rawdata = (Data[j][i].High << 8) | Data[j][i].Low;
Data_z[j][i].sum=((0x80 + 0x02 + Data[j][i].High + Data[j][i].Low)^ 0xFFFFFFFF) & 0xFF;
//printf("%d %d\n",Data_z[j][i].sum,Data_z[j][i].rawdata);
}
}
2014.10.26
本日通过阅读EEG信号说明,发现大包中存在POOR_SIGNAL Quality(噪音值)、ATTENTION eSense(专注度)、MEDITATION eSense(放松度)与Blink Strength(眨眼干扰)。8组数据对于分析显然不够,今早对于实验原始数据进行了重新采集(至少23个数据包)。由于数据过多,编写了C程序来处理数据,并将有用数据(大包以及每个小包中的后3个16进制数)保存到另一个文件中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE *fp_1,*fp_2;
char str_big_check[12],str_big[108],str_small[9];
int i,data_num=0;
if((fp_1=fopen("Mind.txt","r"))==NULL)
{
printf("Error_1\n");
exit(0);
}
if((fp_2=fopen("Mindnew.txt","w"))==NULL)
{
printf("Error_2\n");
exit(0);
}
while(!feof(fp_1))
{
fgets(str_big_check,12,fp_1);
if(strcmp(str_big_check, "AA AA 20 02"))
fseek(fp_1,-10L,1);
else
{
data_num++;
fseek(fp_1,-11L, 1);
fgets(str_big, 108, fp_1);
fputs(str_big,fp_2);
fputc(' ',fp_2);
for(i=0;i<512;i++)
{
fseek(fp_1, 16L, 1);
fgets(str_small, 9, fp_1);
fputs(str_small, fp_2);
fputc(' ', fp_2);
}
}
}
fclose(fp_1);
fclose(fp_2);
printf("%d",data_num);
return 0;
}
将上面采集到的有用数据稍作处理,即可得到所需数据集。
在上一日的基础上,改进了数据处理程序,添加了专注度等的数据采集。
struct SMA
{
int singal;
int attention;
int meditation;
long int delta;
long int theta;
long int lalpha;
long int halpha;
long int lbeta;
long int hbeta;
long int lgamma;
long int hgamma;
int check;
}sma[row];
得到的数据通过导入MATLAB,得到峰值曲线。
目前遇到瓶颈为:
- 得到的信号曲线起伏不定,未能发现任何有规律之处。
- 脑电波信号精确度无法确定,将来在数据采集上会有一个值域。
- 峰值可能并不是有效信号的载体,信号变化率将在MATLAB中重做。
- 两人MATLAB水平目前菜得抠脚,继续学习。