Python实现小波变换去噪,利用Pywavelets处理脑电信号,代码参考
小波变换的数学原理
先略了,日后补上。
PyWavelets中几个函数的API
Wavelet
Waverec
threshold
代码
读取数据
// An highlighted block
import numpy as np
import matplotlib.pyplot as plt
import pywt
import pywt.data
from mne.io import concatenate_raws, read_raw_edf, read_raw_fif
from mne import read_events
import pyedflib
import math as m
file = pyedflib.EdfReader("S001R01.edf")
#number of channels: 64 信号信息
totalSignals = file.signals_in_file #totalSignals = 64
signal_labels = file.getSignalLabels() #label names of electrode in 10-10 system
#把data转为64x19920
''' -80 removes the ending 80 zero data points'''
data = np.zeros((totalSignals, file.getNSamples()[0]-80))
for i in np.arange(totalSignals):
data[i, :] = file.readSignal(i)[:-80]
jupyternotebook绘图设置问题
plt.rcParams['figure.figsize'] = (20.0, 8.0)
小波变换,选用小波函数sym5
mode =pywt.Modes.smooth
w=pywt.Wavelet('sym5')
a = data[23]
ca = []
cd = []
for i in range(4):
(a,d) = pywt.dwt(a,w,mode)
ca.append(a)
cd.append(d)
sigmod=(np.median(abs(ca[3]))/0.6475)
T=sigmod*m.sqrt(2*m.log(len(data[23]),10))
lamda=T/(m.log(m.exp(1)+2*(len(ca[3])-1)))
print (lamda)
通过阈值法来对A1部分进行阈值选择,其中阈值的选择如↑
ca[3]=pywt.threshold(data=ca[3], value=lamda, mode='soft', substitute=8*lamda)
coeff_list2 = [np.array(ca[3]),np.array(cd[3]),np.array(cd[2]),np.array(cd[1]),np.array(cd[0])]
newdata=pywt.waverec(coeff_list2,'sym5')
fig = plt.figure()
ax_main = fig.add_subplot(5,1,1)
ax_main.set_title('after')
ax_main.plot(newdata)
ax_main.set_xlim(0,len(newdata)-1)
ax = fig.add_subplot(5,1,2)
ax.set_title('orgin')
ax.plot(data[23])
ax.set_xlim(0,len(data[23])-1)
plt.show()
小波逆变换,并绘图

注意事项以及我也没弄懂的地方
这里编译器是jupyter
智能推荐
Spark单机版安装及配置(win10)
写在前面: 本篇博文记录在win10上安装spark单机版的过程,需要安装的软件有:Java JDK、Scala、Hadoop、Spark,本次安装的版本以及版本之间的对应要求如下: 在安装之前,新建一个spark文件夹,除了java之外其他软件都放在这个文件夹下,方便管理。 1 安装java 1.1 查看java是否安装及版本信息 如果已经安装了java,需要查看版本,Java版本最好是1.8或...
ADB命令指令控制Android系统的WIFI连接开启/关闭状态
Android系统的usb调试已开启,连接电脑(有ADB环境) 1.在cmd中,进入shell指令模式 2.进入ROOT指令模式 3. 打开WIFI指令 4. 关闭WIFI指令...
在阿里云部署flask接口,外网无法访问问题解决
1:修改阿里云防火墙 打开官网,控制台,自己的服务器,点防火墙,然后添加规则,开放端口(5000) 2:ssh连接服务器修改防火墙,我这里使用finalShell连接到阿里云服务器 输入: 参考文章:https://blog.csdn.net/qq_39481696/article/details/85098957...
java.io理解(一)
流包括输入流和输出流,何为输入流?何为输出流呢?二者应该怎么使用呢?本人对输入流和输出流的理解是:针对程序而言,将资源记录到程序内,就是输入流;将资源导入到程序外部介质中就是输出流。输入流用read方法读取资源到程序,输出流用write方法将资源从程序内部保存到相应的对象中。举一个比较形象的例子,把大脑比作程序,书本比作资源,人类通过read书本,将知识存入大脑中,这就是输入流的过程;相反,将大脑...
Vue 实践过程中的几个问题
前言 本篇是我在使用vue过程中,遇到的几个小问题和之前不了解的东西,记录下来,希望能够帮助各位踩坑。如果喜欢的话可以点波赞,或者关注一下,希望本文可以帮到大家。 本文首发于我的个人blog:obkoro1.com 本篇记录个人遇到的问题如下: 路由变化页面数据不刷新问题 setTimeout/setInterval this指向改变,无法用this访问VUe实例 setInterval路由跳转继...
猜你喜欢
数据库 分库分表----全貌解析----策略,方法,中间件,途中问题,数据迁移方法
https://baijiahao.baidu.com/s?id=1622441635115622194&wfr=spider&for=pc https://mp.weixin.qq.com/s/5bBzVN-6jbpMtJf0xxssNg https://www.cnblogs.com/405845829qq/p/7552736.html https://mp.weixin.qq...
Qt5.12.7之MySql8.0环境搭建
环境介绍 系统:Win10 64位 Qt版本:Qt5.12.7 编译器:Qt5.12.7 MinGW 64-bit 待搭建数据库:MySql-8.0.19 特殊说明...
算法-堆
堆 1. 堆的基本实现 堆的时间复杂度为O(NlogN),利用二叉堆实现 最大堆特性:堆中的某个节点值总是不大于其父节点的值,堆总是一棵完全二叉树 用数组存放二叉堆,元素从1开始存放 1.1 Shift Up操作 上面执行的是先插入操作:先count++,然后把插入的元素放在最后面,然后比较该元素和父节点的大小,如果比父节点大,则此时不满足堆的性质,交换,直到该元素的值比父节点的值小为止。 1.2...
02 测试工作常用SQL-高级join多表查询(基于MySQL)
1、join多表查询简介 先来看w3c上给出的一张解释图 解释: INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN:只要其中一个表中存在匹配,则返回行 2、实操演示 2.1 表结构说明 现在有这样一个公司部门人员各个信息的数据库,包含了如下几个表:...
######日期组件设置默认值。【###《和日期组件没有关系》至今不知道哪个js。设置input的value为格式化的值即可。】
===【UI实现了。提交表单,是否传递日期数据正确?待测。。。】 === 实现效果: ===代码: form页js: ====后台动态时间获取: =====...
