前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python接受tgam的脑波数据实例

使用python接受tgam的脑波数据实例

作者头像
砸漏
发布2020-11-04 11:12:45
1.1K0
发布2020-11-04 11:12:45
举报
文章被收录于专栏:恩蓝脚本

废话不多说,来看看实例吧!

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import serial 
filename='yjy.txt' 
t = serial.Serial('COM5',57600)
b=t.read(3)
vaul=[]
i=0
y=0
p=0
while b[0]!=170 or b[1]!=170 or b[2]!=4:
b=t.read(3)
print(b)
if b[0]==b[1]==170 and b[2]==4:
a=b+t.read(5)
print(a)
if a[0] == 170 and a[1]==170 and a[2]==4 and a[3]==128 and a[4]==2: 
while 1:
i=i+1
#  print(i)
a=t.read(8)
#  print(a)
sum=((0x80+0x02+a[5]+a[6])^0xffffffff)&0xff
if a[0]==a[1]==170 and a[2]==32:
y=1
else:
y=0
if a[0] == 170 and a[1]==170 and a[2]==4 and a[3]==128 and a[4]==2:
p=1
else:
p=0
if sum!=a[7] and y!=1 and p!=1:
print("wrroy1")
b=t.read(3)
c=b[0]
d=b[1]
e=b[2]
print(b)
while c!=170 or d!=170 or e!=4:
c=d
d=e
e=t.read()
print("c:")
print(c)
print("d:")
print(d)
print("e:")
print(e)
if c==(b'\xaa'or 170) and d==(b'\xaa'or 170) and e==b'\x04':
g=t.read(5)
print(g)
if c == b'\xaa' and d==b'\xaa' and e==b'\x04' and g[0]==128 and g[1]==2: 
a=t.read(8)
print(a)
break
#  if a[0]==a[1]==170 and a[2]==4:
# print(type(a))
if a[0] == 170 and a[1]==170 and a[2]==4 and a[3]==128 and a[4]==2:
high=a[5]
low=a[6]
#  print(a)
rawdata=(high<<8)|low 
if rawdata 32768:
rawdata=rawdata-65536
#  vaul.append(rawdata)
sum=((0x80+0x02+high+low)^0xffffffff)&0xff
if sum==a[7]:
vaul.append(rawdata)
if sum!=a[7]:
print("wrroy2")
b=t.read(3)
c=b[0]
d=b[1]
e=b[2]
#   print(b)
while c!=170 or d!=170 or e!=4:
c=d
d=e
e=t.read()
if c==b'\xaa' and d==b'\xaa' and e==b'\x04':
g=t.read(5)
print(g)
if c == b'\xaa' and d==b'\xaa' and e==b'\x04' and g[0]==128 and g[1]==2: 
a=t.read(8)
print(a)
break
if a[0]==a[1]==170 and a[2]==32:
c=a+t.read(28)
print(vaul)
print(len(vaul))
for v in vaul:
w=0
if v<=102:
w+=v
q=w/len(vaul)
q=str(q)
with open(filename,'a') as file_object:
file_object.write(q)
file_object.write("\n")
if 102<v<=204:
w+=v
q=w/len(vaul)
q=str(q)
with open(filename,'a') as file_object:
file_object.write(q)
file_object.write("\n")
if 204<v<=306:
w+=v
q=w/len(vaul)
q=str(q)
with open(filename,'a') as file_object:
file_object.write(q)
file_object.write("\n")
if 306<v<=408:
w+=v
q=w/len(vaul)
q=str(q)
with open(filename,'a') as file_object:
file_object.write(q)
file_object.write("\n")
if 408<v<=510:
w+=v
q=w/len(vaul)
q=str(q)
with open(filename,'a') as file_object:
file_object.write(q)
file_object.write("\n")
#  print(c)
vaul=[]
#  if i==250:
#  break
#  with open(filename,'a') as file_object:
#   file_object.write(q)
#   file_object.write("\n")

补充知识:Python处理脑电数据:PCA数据降维

pca.py

代码语言:javascript
复制
#!-coding:UTF-8-
from numpy import *
import numpy as np
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [map(float,line) for line in stringArr]
return mat(datArr)
def percentage2n(eigVals,percentage):
sortArray=np.sort(eigVals) #升序
sortArray=sortArray[-1::-1] #逆转,即降序
arraySum=sum(sortArray)
tmpSum=0
num=0
for i in sortArray:
tmpSum+=i
num+=1
if tmpSum =arraySum*percentage:
return num
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals)  #sort, sort goes smallest to largest
eigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensions
redEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallest
lowData_N = meanRemoved * redEigVects#transform data into new dimensions
reconMat_N = (lowData_N * redEigVects.T) + meanVals
return lowData_N,reconMat_N
def pcaPerc(dataMat, percentage=1):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals)  #sort, sort goes smallest to largest
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
return lowData_P,reconMat_P

readData.py

代码语言:javascript
复制
import matplotlib.pyplot as plt
from pylab import *
import numpy as np
import scipy.io as sio
def loadData(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()
#print type(load_data)
#print type(load_matrix)
#print load_matrix_row
return load_matrix

main.py

代码语言:javascript
复制
#!-coding:UTF-8
import matplotlib.pyplot as plt
from pylab import *
import numpy as np
import scipy.io as sio
import pca
from numpy import mat,matrix
import scipy as sp
import readData
import pca
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)
#print lowDMat
#print reconMat
print shape(lowData_N)
print shape(reconMat_N)
print shape(lowData_P)
print shape(reconMat_P)

以上这篇使用python接受tgam的脑波数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档