使用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_P
readData.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_matrix
main.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的脑波数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。