算法
zhoudapeng01
这个作者很懒,什么都没留下…
展开
-
Unity-Python-VUE Socket通信
需求描述:Unity通过Socket发送数据给网页在前端VUE中显示,socket服务采用Python实现。实际上这个功能可以分为下面三个部分:查了好多资料,整理如下的学习路线方便新手入坑。1、Unity和服务端的Socket通信;Unity的Socket服务,这个部分还算顺利没有遇到太坑的问题,参考下面的文章:http://www.luohanjie.com/2019-07-25/socket-io-for-unity3d.html这里提到的一个插件 Socket For Unity3原创 2020-12-03 14:39:56 · 678 阅读 · 0 评论 -
脑电特征中的微分熵(DE)计算
最近参加了一个脑电相关的竞赛,其中有一个赛道是情绪识别,根据脑电数据将情绪进行4分类,查了一些文献,使用了包括时域、频域、空间域的一些特征,最后发现微分熵作为特征的分类效果最好。相关参考文献整理下载:https://download.csdn.net/download/zhoudapeng01/12845100微分熵作为作为香农熵在连续变量上的推广形式其计算比较简单:参考:http://cg.cs.tsinghua.edu.cn/people/~Yongjin/N112018-00337.p原创 2020-09-15 16:20:01 · 14715 阅读 · 13 评论 -
Python中MNE库的脑电地形图绘制
脑电地形图在进行和“源”相关的分析时很有用,可以直观的看出各个电极的激活情况以及其随时间的变化。在标准的脑电数据中都是有电极的坐标位置的,会用EEGLab的可能对这块比较熟悉了,实际MNE库中也有相关的定义和实现,可以导入外部的电极数据,或者使用一些标准的位置信息如:10-20电极分布。电极的坐标以及坐标系:脑电电极的分布可以根据实际情况设计不同的位置,以标准的1020为例。https://www.diytdcs.com/2012/07/1020-system-electrode-distanc原创 2020-09-10 11:56:22 · 9280 阅读 · 2 评论 -
Python中HHT(希尔伯特-黄变换)以及其在EEG数据处理中的应用
在脑电信号的处理过程中去除伪迹是很关键的一个步骤,常用的有ICA和小波等方法。不过这些方法大多是针对多通道脑电数据进行处理的,单通道的脑电数据如何去除伪迹呢?推荐一篇文章《单通道脑电信号眼电伪迹去除算法研究》,在文章中提到了一种WT-EEMD-ICA方法,该方法是小波-集合经验模态分解-独立成分分析的结合。具体内容感兴趣的可以精读下这篇文章,在对应的下载附件中有这篇文章。文章相关资源下载:上面说的和本篇的内容关系不大,我就是在看了文章后对里面提到的HHT方法感兴趣,就研究了一下。下面主要说的是HHT原创 2020-09-08 09:27:04 · 10820 阅读 · 11 评论 -
Python中FIR滤波和小波包滤波对比(MNE脑电数据处理)
小波变换有信号显微镜之称,在EEG分析中也有广泛的应用,印象中小波算法是来源于地球物理解释的。之前有介绍过小波的一些资料和实现:https://blog.csdn.net/zhoudapeng01/article/details/107025901可以参考下,这里主要分析小波和FIR滤波效果的对比。博客对应的代码# 短时傅里叶变换和FIR滤波效果对比import mneimport matplotlib.pyplot as pltfrom scipy import signal, fft原创 2020-09-01 14:04:10 · 2891 阅读 · 1 评论 -
Python中FIR滤波和STFT滤波对比(MNE脑电数据处理)
在脑电数据处理中滤波是很重要的一个步骤,直接影响后面的特征提取等计算流程。在之间写的博客中有过介绍(https://blog.csdn.net/zhoudapeng01/article/details/106124655),目前在脑电领域应用比较多的滤波方法有FIR,小波,以及STFT(短时傅里叶变换)等。这里主要对比MNE库提供的FIR滤波和STFT方法:FIR滤波:FIR带通滤波在脑电数据处理中使用的非常多,其本质就是一个带通滤波器,主要用来分离不同频段的脑波数据,用于后续的数据处理工作。其在MNE原创 2020-08-26 09:34:44 · 3289 阅读 · 0 评论 -
Python 中MNE库去伪迹(ICA)
脑电数据处理过程中如何去除伪迹是很重要的一个步骤,伪迹的处理主要包括眼电、心电、肌肉点以及工频干扰。实际处理过程中通过滤波0.5-45赫兹的带通滤波器可以去除掉大部分的噪音,在我接触到的实际脑电数数据中心电的伪迹大多数还真不是很明显,去伪迹的时候眼电的伪迹相对更加明显一些。MNE库中也有很多去伪迹的方法,这里给大家介绍一种ICA的方式。查看了一些文章,ICA在脑电数据处理中应用的也比较普遍。采用ICA的方式去除伪迹,主要的工作就是分辨出ICA成分中的伪迹,实际上在你做完ICA后如果伪迹明显,还是很容原创 2020-07-29 14:50:59 · 6449 阅读 · 2 评论 -
Python中小波工具(pywt)分析EEG数据
小波作为一种信号处理的工具在脑波分析中应用很多,常用的有连续小波变换、小波包分析等等。小波涉及的相关介绍和公式推导有很多资料,推荐下面几个连接,本文主要介绍连续小波变换,小波包分解重构,对应频段能量计算这3种应用在Python中的实现。小波变换:https://www.cnblogs.com/jfdwd/p/9249850.htmlhttps://blog.csdn.net/weixin_42943114/article/details/89603208https://my.oschina.原创 2020-07-01 15:26:12 · 21406 阅读 · 7 评论 -
Python中MNE库进行PSD分析(计算不同频率区间的累加和)
在做脑波数据分析的时候,免不了需要进行频率域的数据分析,功率谱密度是常用的一种分析方法,在MNE库中有psd算法的实现。开始使用之前推荐个博客,https://zhuanlan.zhihu.com/p/49328001讲解了什么是PSD。有一点需要注意,PSD通常根据频率分辨率做归一化也就是其分母为采样点数。对应的官方实例:https://mne.tools/stable/auto_tutorials/time-freq/plot_sensors_time_frequency.html#sphx-.原创 2020-06-23 11:58:11 · 7934 阅读 · 1 评论 -
Python中MNE库滤波的重要性
最近在处理MI数据的时候发现滤波真的很重要啊,之前一直没把预处理当个事,这次发现还是很重要的!!!一、滤波对分类准确率的影响。1、以MNE官方提供的CSP实例为例(https://blog.csdn.net/zhoudapeng01/article/details/104969977):有FIR滤波的时候准确率为百分之九十多。注释掉FIR滤波后,准确率只有百分之三十多。。。还赶不上随机的结果。2、以BCICompetition中的BCICIV_2a_gdf数据为例:.原创 2020-05-15 14:27:07 · 3661 阅读 · 3 评论 -
Python中MNE库的事件相关特定频段分析(MEG数据)
最近做运动想象分类的时候遇到一个问题就是分类结果始终不准,想从原始数据分析一下脑电数据,找了下MNE提供的examples。里面还真有一个按频带分析的例子,说实话打开这个例子最主要的原因是这个图看着比较牛。。。后面的主要内容就是分析这个例子的实现原理了。先上代码吧...原创 2020-04-17 16:54:14 · 1863 阅读 · 0 评论 -
Python中MNE库的EEG数据(PCA和ICA)预处理
PCA/ICA是脑电数据预处理的一个步骤,一般放在带通滤波处理之后,个人理解PCA和ICA的作用基本一致,用于去除心电和眼电的影响。不过PCA是提取主要成分,相当于降维提取特征,ICA是分离独立成分,目前PCA和白化已经是ICA的标准化的预处理步骤了(用于降低计算量)。所以说只做ICA就可以了,因为这个过程也包括PCA了。(有关PCA和ICA的关系:https://www.zhihu.com/...原创 2020-03-31 16:12:43 · 9603 阅读 · 8 评论 -
Python中MNE库模拟原始脑电数据
研究脑电算法的时候发现了一个问题,如何评价模型的准确性? 之前的工作流程都是先用公开数据集的数据训练好模型,然后放到实测数据上进行参数微调。在公开数据集上进行模型的选择主要是因为公开数据集的数据质量较好,可以排除硬件的影响,从而专心于算法的研究。但有些时候,尽管在公开数据集上计算模型得到的结果也不是很理想,可是还想进一步分析算法,这时候就需要保证数据的不受其他因素的影响了,可是实测的数据总是会受到...原创 2020-03-26 13:08:12 · 2055 阅读 · 0 评论 -
运动想象中共空间模式算法(CSP)的实现
最近在研究运动想象算法,其中CSP来提取特征用的比较多,尤其是在二分类的问题中,之前写过一篇如何在MNE库中实现CSP算法的博客,用的是MNE库中已经写好的算法,现在想自己实现该算法,研究了几天发现坑还是比较多的。。。先列出一些参考的博客文章,里面有对应的算法在matlab中的实现,后面主要是解释算法中的一些细节以及自己对该算法的理解。CSP原理:https://blog.csdn.net...原创 2020-03-20 17:39:39 · 11726 阅读 · 20 评论 -
Python中MNE库利用CSP分析运动想象数据
最近在研究EEG运动想象相关的内容,都说CSP在运动想象领域很好用,刚好最近接触了MNE库,就尝试了一下在这个库中的实现。牛皮就是牛皮,有现成的方法可以调用,既然有方法那当然也有示例了。官方给的示例,后面的内容就是对文档中的示例程序进行分析。https://mne.tools/stable/auto_examples/decoding/plot_decoding_csp_eeg.htm...原创 2020-01-15 12:01:13 · 11548 阅读 · 17 评论 -
C#中实现FFT的两种方法
最近工作中有个需求,在C#环境中实现FFT算法,在网上找了些资料,最后实现了下面的两种方式,实际应用任选其一就好。第一种方法:不依赖C#中的Complex,需要实现计算过程的每一步详细步骤。输入序列长度为2的N次幂,使用前需先定义序列长度:FFT filter = new FFT(256);filter.fft(x,y) 其中x为实部y为虚部,计算后x为FFT后的实部,y为FF...原创 2019-12-24 16:54:21 · 8929 阅读 · 4 评论 -
C#中实现FIR带通滤波
最近有一个需求,在C#中实现FIR滤波,网上查了些资料感觉FIR滤波使用的还算比较多,相关的原理也比较简单。参考下面在Python环境中实现FIR的博客,在C#的环境中实现了一遍。https://blog.csdn.net/moge19/article/details/94495442(Python实现FIR带通滤波器)下文中的工程下载链接:https://download.csdn.ne...原创 2019-12-18 09:37:31 · 3940 阅读 · 1 评论 -
AES128加密算法的实现(C/Java/C#)
最近项目中有一个需求,实现AES128的加密算法,用于硬件和平台的通信。硬件加密部分使用C语言完成、平台有两种不同的环境:java(Linux)和C#(Windows)。在网上搜集了一些资料,有人实现过纯C代码的AES加密解密算法,这样实际上有一种较为简单的解决思路:加密部分直接拿过来使用;解密部分可以打包为dll(windows环境)或SO(linux环境)库供平台调用。但考虑到环境的兼容性等问...原创 2019-12-11 11:27:54 · 3420 阅读 · 1 评论 -
C#中实现神经网络算法打包dll(给Unity调用)
最近做Unity项目的时候有一个需求:在Unity中实现神经网络算法,最终还要满足跨平台,也就是在windows下和android下都能使用。在Unity中只涉及到网络的实现部分,也就是正向传播部分,网络的训练可以放到matlab和python中,这样可以减轻开发的压力。做了下面的一些简单尝试:1、C++打包dll给Unity调用,在Windows下没问题可行,在Android下不可行,实...原创 2019-12-04 13:26:54 · 2092 阅读 · 1 评论