使用python接受tgam的脑波数据实例
废话不多说,来看看实例吧!
#-*-coding:utf-8-*- importserial filename='yjy.txt' t=serial.Serial('COM5',57600) b=t.read(3) vaul=[] i=0 y=0 p=0 whileb[0]!=170orb[1]!=170orb[2]!=4: b=t.read(3) print(b) ifb[0]==b[1]==170andb[2]==4: a=b+t.read(5) print(a) ifa[0]==170anda[1]==170anda[2]==4anda[3]==128anda[4]==2: while1: i=i+1 #print(i) a=t.read(8) #print(a) sum=((0x80+0x02+a[5]+a[6])^0xffffffff)&0xff ifa[0]==a[1]==170anda[2]==32: y=1 else: y=0 ifa[0]==170anda[1]==170anda[2]==4anda[3]==128anda[4]==2: p=1 else: p=0 ifsum!=a[7]andy!=1andp!=1: print("wrroy1") b=t.read(3) c=b[0] d=b[1] e=b[2] print(b) whilec!=170ord!=170ore!=4: c=d d=e e=t.read() print("c:") print(c) print("d:") print(d) print("e:") print(e) ifc==(b'\xaa'or170)andd==(b'\xaa'or170)ande==b'\x04': g=t.read(5) print(g) ifc==b'\xaa'andd==b'\xaa'ande==b'\x04'andg[0]==128andg[1]==2: a=t.read(8) print(a) break #ifa[0]==a[1]==170anda[2]==4: #print(type(a)) ifa[0]==170anda[1]==170anda[2]==4anda[3]==128anda[4]==2: high=a[5] low=a[6] #print(a) rawdata=(high<<8)|low ifrawdata>32768: rawdata=rawdata-65536 #vaul.append(rawdata) sum=((0x80+0x02+high+low)^0xffffffff)&0xff ifsum==a[7]: vaul.append(rawdata) ifsum!=a[7]: print("wrroy2") b=t.read(3) c=b[0] d=b[1] e=b[2] #print(b) whilec!=170ord!=170ore!=4: c=d d=e e=t.read() ifc==b'\xaa'andd==b'\xaa'ande==b'\x04': g=t.read(5) print(g) ifc==b'\xaa'andd==b'\xaa'ande==b'\x04'andg[0]==128andg[1]==2: a=t.read(8) print(a) break ifa[0]==a[1]==170anda[2]==32: c=a+t.read(28) print(vaul) print(len(vaul)) forvinvaul: w=0 ifv<=102: w+=v q=w/len(vaul) q=str(q) withopen(filename,'a')asfile_object: file_object.write(q) file_object.write("\n") if102补充知识:Python处理脑电数据:PCA数据降维
pca.py
#!-coding:UTF-8- fromnumpyimport* importnumpyasnp defloadDataSet(fileName,delim='\t'): fr=open(fileName) stringArr=[line.strip().split(delim)forlineinfr.readlines()] datArr=[map(float,line)forlineinstringArr] returnmat(datArr) defpercentage2n(eigVals,percentage): sortArray=np.sort(eigVals)#升序 sortArray=sortArray[-1::-1]#逆转,即降序 arraySum=sum(sortArray) tmpSum=0 num=0 foriinsortArray: tmpSum+=i num+=1 iftmpSum>=arraySum*percentage: returnnum defpca(dataMat,topNfeat=9999999): meanVals=mean(dataMat,axis=0) meanRemoved=dataMat-meanVals#removemean covMat=cov(meanRemoved,rowvar=0) eigVals,eigVects=linalg.eig(mat(covMat)) eigValInd=argsort(eigVals)#sort,sortgoessmallesttolargest eigValInd=eigValInd[:-(topNfeat+1):-1]#cutoffunwanteddimensions redEigVects=eigVects[:,eigValInd]#reorganizeeigvectslargesttosmallest lowData_N=meanRemoved*redEigVects#transformdataintonewdimensions reconMat_N=(lowData_N*redEigVects.T)+meanVals returnlowData_N,reconMat_N defpcaPerc(dataMat,percentage=1): meanVals=mean(dataMat,axis=0) meanRemoved=dataMat-meanVals#removemean covMat=cov(meanRemoved,rowvar=0) eigVals,eigVects=linalg.eig(mat(covMat)) eigValInd=argsort(eigVals)#sort,sortgoessmallesttolargest n=percentage2n(eigVals,percentage) n_eigValIndice=eigValInd[-1:-(n+1):-1] n_eigVect=eigVects[:,n_eigValIndice] lowData_P=meanRemoved*n_eigVect reconMat_P=(lowData_P*n_eigVect.T)+meanVals returnlowData_P,reconMat_PreadData.py
importmatplotlib.pyplotasplt frompylabimport* importnumpyasnp importscipy.ioassio defloadData(filename,mName): load_fn=filename load_data=sio.loadmat(load_fn) load_matrix=load_data[mName] #load_matrix_row=load_matrix[0] #figure(mName) #plot(load_matrix,'r-') #show() #printtype(load_data) #printtype(load_matrix) #printload_matrix_row returnload_matrixmain.py
#!-coding:UTF-8 importmatplotlib.pyplotasplt frompylabimport* importnumpyasnp importscipy.ioassio importpca fromnumpyimportmat,matrix importscipyassp importreadData importpca if__name__=='__main__': A1=readData.loadData('6electrodes.mat','A1') lowData_N,reconMat_N=pca.pca(A1,30) lowData_P,reconMat_P=pca.pcaPerc(A1,0.95) #printlowDMat #printreconMat printshape(lowData_N) printshape(reconMat_N) printshape(lowData_P) printshape(reconMat_P)以上这篇使用python接受tgam的脑波数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。