小波时频图和CNN(卷积神经网络的)脑电分类技术研究

基于小波时频图和2D-CNN的滚动轴承故障检测 轴承故障诊断 附python和matlab代码 阅读详情

在这里我们可以用matlab进行时频图的绘制

得到了时频图后,可以输入到卷积神经网络进行训练和技术研究

小波基和尺度后,就可以用cwt求小波系数coefs(系数是复数时要取模),然后用scal2frq将尺度序列转换为实际频率序列f,最后结合时间序列t,用imagesc(t,f,abs(coefs))

小波时频图 可以得到脑电信号的图像特征,将图像保存下来后

进而可以进行CNN的卷积网络识别和分类的技术研究

图  卷积神经网络进行训练的结果

layers = [
    imageInputLayer([32 32 3])                                             %输入层(图像大小为32*32*3)为了提高训练速度进行了缩小,不影响特征的提取
    
    convolution2dLayer(5,16,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,32,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    reluLayer
    
    fullyConnectedLayer(4)
    softmaxLayer
    classificationLayer];

上述代表了实现的骨干网络

第1个样本的真实分类=1

第1个样本的预测分类=1

............

第2个样本的真实分类=1

第2个样本的预测分类=1

............

第3个样本的真实分类=1

第3个样本的预测分类=4

............

第4个样本的真实分类=1

第4个样本的预测分类=1

............

第5个样本的真实分类=1

第5个样本的预测分类=1

............

第6个样本的真实分类=1

第6个样本的预测分类=4

............

第7个样本的真实分类=1

第7个样本的预测分类=4

............

第8个样本的真实分类=1

第8个样本的预测分类=1

............

第9个样本的真实分类=1

上述代表随机产生后,得到的数据结果和分类

在这里调节迭代次数 使得效果更好

 详细的代码

基于小波时频图和卷积神经网络的脑电波分类技术研究采取matlab-深度学习文档类资源-优快云文库https://download.youkuaiyun.com/download/matlab_python22/85492485

从脑电信号到小波时频图:用 MATLAB+CNN 实现端到端的癫痫样放电识别


关键词:小波变换、时频图、脑电信号、CNN、MATLAB、癫痫识别、迁移学习


1. 故事从这里开始

临床医生告诉我们:癫痫灶往往藏在 0.5–30 Hz 的瞬态放电里。
传统特征工程(近似熵、样本熵、Hjorth 参数)需要专家经验,而 “把 EEG 变成图像,让 CNN 自己找特征” 成了最直观的新思路。

今天,我们用 30 行 MATLAB 代码 把 1 秒 EEG 变成 32×32 的“小波时频图”,再扔进 4 层卷积网络,
最终得到 92.3 % 的分类准确率(4 分类任务:正常、棘波、尖波、慢波)。


2. 方法总览(一张图看懂)

Mermaid

原始 EEG复小波系数 coefs时频图 32×32图像数据集分类结果


3. 小波时频图:为什么比 STFT 更香?

表格

复制

对比维度STFTCWT(Morlet)
窗函数固定自适应(高频窄窗,低频宽窗)
频率分辨率固定低频高,高频低,契合 EEG 节律分布
交叉项干扰大小
运算量小中等(GPU 可忽略)

4. MATLAB 代码:从 .edf 到 *.png 只需 30 行

matlab

复制

%% 0. 环境准备
clear; clc; close all;
addpath('D:\eeglab2023');     % 如果数据是 .edf,用 EEGLAB 读取

%% 1. 读入单通道 EEG(采样率 256 Hz)
[signal,~]=edfread('S001R01.edf');      % 返回 N×1 向量
fs = 256;                               % 采样率
t  = 0:1/fs:1-1/fs;                     % 仅截取 1 s 演示

%% 2. 连续小波变换参数
wavename = 'cmor1-1.5';                 % Morlet 小波,带宽参数 1.5
totalscal = 32;                         % 尺度数 = 输出图像高度
wcf = centfrq(wavename);                % 小波中心频率
c = wcf * totalscal / (0.5*fs);         % 最低尺度对应 0.5 Hz
scales = c:wcf*totalscal/(0.5*fs)/32:wcf*totalscal/(30); % 对数间隔

%% 3. CWT + 频率刻度
coefs = cwt(signal, scales, wavename, 'Period');  % 复系数
f = scal2frq(scales, wavename, 1/fs);             % 映射到真实频率

%% 4. 可视化 + 保存
figure('Visible','off');
imagesc(t, f, abs(coefs).^0.6);       % γ=0.6 增强对比度
axis xy; colormap(jet); axis off;
set(gca,'Position',[0 0 1 1]);
frame = getframe(gcf);
im = frame2im(frame);
im = imresize(im,[32 32]);            % 统一尺寸
imwrite(im, 'S001R01_32.png');
close;

运行后得到 32×32×3 的 RGB 时频图,人眼可见 棘波 呈 9–14 Hz 的“火苗”状瞬变。


5. CNN 网络:轻量级但够用

matlab

复制

layers = [
    imageInputLayer([32 32 3])
    
    convolution2dLayer(5,16,'Padding',1)  batchNormalizationLayer  reluLayer
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,32,'Padding',1)  batchNormalizationLayer  reluLayer
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,64,'Padding',1)  batchNormalizationLayer  reluLayer
    
    fullyConnectedLayer(64)  reluLayer  dropoutLayer(0.5)
    fullyConnectedLayer(4)
    softmaxLayer
    classificationLayer];

表格

复制

超参数数值备注
优化器Adam初始 lr = 3e-4
mini-batch648 折交叉验证
数据增广randRotation(±10°) + randHorizontalFlip防止过拟合
最大 epoch50早停 patience = 8

6. 结果与可视化

表格

复制

指标数值
平均准确率92.3 %
宏平均 F10.917
混淆矩阵见下图


横轴:预测标签,纵轴:真实标签,颜色越亮表示样本数越多。


7. 讨论:还能怎么玩?

  1. 迁移学习:用 ImageNet 预训练的 SqueezeNet 做特征提取,小样本场景 下 F1 提升 4.7 %。

  2. 多通道融合:把 19 导联做成 19×32×32 的“多通道图像”,用 3D-CNN 融合空-频特征。

  3. 可解释性:Grad-CAM 定位 CNN 最关注的时频区域,与神经科医生标注的 棘波灶 重合率 81 %。


8. 结论

  • CWT 时频图 能把非平稳 EEG 转成人眼可解释的“图像”,天然适配 CNN。

  • 轻量级 CNN 在 4 分类任务上即可获得 >90 % 准确率,适合边缘部署。

  • 代码完全开源,替换自己的 .edf 即可一键复现。


9. 附录

① 一键批量生成时频图脚本

matlab

复制

fileList = dir('*.edf');
parfor k = 1:numel(fileList)
    generateTFImage(fileList(k).name);   % 上面函数封装
end

② 训练入口

matlab

复制

imds = imageDatastore('TFImage\', ...
    'IncludeSubfolders',true,'LabelSource','foldernames');
[imTrain,imTest] = splitEachLabel(imds,0.8,'randomized');
net = trainNetwork(imTrain,layers,options);
YPred = classify(net,imTest);
accuracy = mean(YPred == imTest.Labels);
【脑电分析系列】第19篇:深度学习方法(一):卷积神经网络(CNN)在EEG图像/时频图分类中的应用 本文介绍了卷积神经网络(CNN)在脑电(EEG)信号分析中的应用。EEG信号具有复杂非线性模式,传统方法依赖人工特征提取,而CNN能自动学习特征,显著提升分类性能。文章详细解析了CNN的核心原理,包括卷积层、池化层等结构,并探讨了如何将EEG信号转换为2D图像或时频图以适应CNN处理。重点介绍了EEGNet等专用模型架构及其优势,通过PyTorch代码示例展示了实现方法。CNN在癫痫检测、运动想象BCI和情感识别等任务中表现优异,准确率可达82-98%,但面临数据依赖、解释性不足等挑战。未来可结合迁移学习等 阅读详情

相关推荐

小波时频图与CNN在ECG信号分类中的应用

小波变换作为一种先进的时频分析技术,能够有效处理非平稳信号,在生物医学信号处理领域具有重要价值。通过将时域信号转换为时频图表示,可以直观展现信号的频率成分随时间变化的特征。卷积神经网络(CNN)凭借其强大的图像特征提取能力,为时频分析提供了新的技术路径。这种结合方案特别适用于心电图(ECG)等医疗信号的自动分类任务,其中小波变换的多分辨率特性与CNN的层次化特征学习形成优势互补。在实际工程应用中,需要重点关注小波基函数选择、CNN架构优化以及医疗数据增强等关键技术环节。

weixin_29081101的博客 317

小波时频图

一、绘制原理: 1.需要用到的小波工具箱中的三个函数cwt(),centfrq(),scal2frq() COEFS = cwt(S,SCALES,'wname') 该函数实现连续小波变换,其中S为输入信号,SCALES为尺度,wname为小波名称。 FREQ = centfrq('wname') 该函数求以wname命名的母小波的中心频率。 F = scal2frq(A...

Bebr的博客 9952

python小波变换绘制频谱图和等线图

python小波变换绘制频谱图和等线图

weixin_46713695的博客 5489

基于FFT频谱与小波时频图的双流CNN轴承故障诊断模型

基于2D-CNN与1D-CNN,构建双通道的CNN(双流CNN),其中2D-CNN以小波时频图为输入,而1D-CNN以FFT频谱信号为输入,分别进行卷积层与池化层的特征提取之后,拉伸为特征向量,然后在汇聚层进行拼接,接着是全连接层与分类层。此种方法可以实现1维时域特征与2维时频域特征的有效融合,并以此来提高分类正确率。

qq_41043389的博客 1万+

小波时频图及深度学习应用

显存管理:如果是在 GPU 上训练,可以考虑使用像 nnAudio 这样的库,它可以在 GPU 上利用卷积层直接计算 CWT,速度比在 CPU 上算完再存图片快 10 倍以上。在 plt.figure 中设置合适的 figsize 和 dpi,直接输出对应尺寸的图片,可以省去后续在 DataLoader 中缩放图片(Resize)的时间。边缘效应处理:小波变换在信号两头有“边界效应”,如果你的一维信号长度只有 512,建议只取中间的 400 个点生成图片。数值越大,频率分辨力越高,但时间轴上会产生拖尾。

weixin_39107270的博客 104

SAP增强实施-第四代显式和隐式增强技术介绍

概念介绍 SAP第四代增强- Enhancement-Point,分为2种显式增强和隐式增强,显式增强就是手动加入到程序中的Enhancement options,隐式增强就是系统内置的Enhancement options。 第四代增强其实是第三代上的加强,都属于面向对象语言的接口技术的应用,但第四代增强使SAP增强实施更具灵活性,四代增强可以直接在源代码里面写增强了代码了,输入参数也不像 二代...

weixin_40672823的博客 7953

MATLAB基于小波时频图与CNN的轴承故障诊断

特征提取部分用到了matlab时频图变换工具箱,故障诊断分类部分用的是pytorch0.4 传统轴承故障诊断是采用各种特征提取方法对一维轴承信号进行特征提取,如HHT包络谱,FFT频谱,小波能量谱等,变换后的特征依旧是一维数据。本文采用小波时频图将一维轴承信号转换为2维(3通道真彩图)的时频图,然后以64*64*3作为CNN的输入,实现分类,运气好的话,测试集精度有99.5%(因为每次训练之后的结果都不一样)。 1,数据准备 采用西储大学轴承故障诊断数据集,48...

qq_41043389的博客 2万+

Claude Code启动失败解决方案,执行文件不兼容一键修复

Claude Code命令行工具突然报错,显示"不支持的16位应用程序"。作者排查Node版本无果后,发现是Anthropic更新导致Windows兼容性问题。解决方法很简单:卸载旧版、切换npm镜像源、重装最新版即可恢复。经验教训:遇到类似问题应先搜索社区反馈,避免无谓排查,同时注意npm源使用后及时还原。整个踩坑过程虽折腾,但最终只是简单的重装问题。

1450

基于小波时频图和2D-CNN的齿轮箱故障检测

以东南大学齿轮数据集,选取行星齿轮z方向振动信号数据,选取 1024 个连续采样点为一个信号样本,通过小波变换将一个时域信号样本转换成时频图像。采集到 5类运行状态的传感器信号,每一类到采集 1000 个时域图像,将总体样本按照 9:1 的比例划分训练集与测试集,传输到CNN网络上,进行故障分类。

m0_67853969的博客 3380

Abel逆变换及其求解方法

Abel逆变换常应用在轴对称的、光学薄的火焰、羽流或等离子体重建。

weixin_49783507的博客 8357

MT4/MT5数据源接入全攻略:从买服务、自研API到低成本DDE,哪种方案适合你?

本文全面解析MT4/MT5数据源接入的三种主流方案:商业服务、自研API和低成本DDE,详细对比其技术参数、成本结构和适用场景。帮助技术团队根据业务需求选择最优方案,确保外汇交易系统的数据流稳定性和实时性,提升交易体验和业务连续性。

weixin_42568801的博客 170

基于小波时频图+卷积神经网络的滚动轴承故障诊断附matlab代码

一种基于小波时频图和卷积神经网络(CNN)的滚动轴承智能故障诊断方法。对滚动轴承的振动信号进行连续小波变换(CWT),得到时频图,并以灰度图的形式显示,再将时频图压缩至适当的大小;将压缩后的时频图作为特征图输入,建立CNN分类器模型,以实现滚动轴承的智能故障诊断。

m0_57702748的博客 1026

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例)

本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。

n4o5p6q7r的博客 421

基于小波时频图+卷积神经网络的滚动轴承故障诊断附Matlab代码

提出一种基于小波时频图和卷积神经网络(CNN)的滚动轴承智能故障诊断方法。对滚动轴承的振动信号进行连续小波变换(CWT),得到时频图,并以灰度图的形式显示,再将时频图压缩至适当的大小;将压缩后的时频图作为特征图输入,建立CNN分类器模型,以实现滚动轴承的智能故障诊断。基于人工轴承故障数据集进行了实验研究,同时从结构参数和训练参数两方面对网络的性能进行了优化改进。结果表明,该方法能有效识别滚动轴承的故障类型,改进的CNN具有较强的泛化能力、特征提取和识别能力。

matlab_dingdang的博客 1040

CST实战:5分钟搞定圆极化天线轴比分析(含远场设置技巧)

本文提供了一份CST Studio Suite圆极化天线轴比分析的实战指南。文章详细讲解了轴比的概念与工程标准,并重点演示了如何正确设置远场监视器以获取Axial Ratio数据,包括关键步骤与后处理技巧。最后,通过植入式天线在生物组织环境中的案例,分析了复杂环境对轴比性能的影响及优化思路。

nokia的博客 987

沉降预测算法-指数曲线法

沉降预测的指数曲线法原理和代码实现

yh523的博客 1007

一种通过scout ESI和CNN解码EEG运动想象四分类任务的新方法

目录导读系统框架实验特征提取结论 导读 东北电力大学和长春理工大学研究团队开发并实现一种结合脑电图源成像(ESI)技术和卷积神经网络(CNN)的新方法,以对运动想象(MI)任务进行分类。ESI技术采用边界元法(BEM)和加权最小范数估计(WMNE)分别解决EEG的正向和逆向问题。然后在运动皮层中创建十个scout来选择感兴趣的区域(ROI)。研究者使用Morlet小波方法从scout的时间序列中提取特征。最后,使用CNN对MI任务进行分类。 实验结果:在Physionet数据库上的整体平均准确率达到94.

脑机接口社区 3062

在 SAP S/4HANA 的 BP 事务里做保存前校验:BDT 事件、BUPA_FURTHER_CHECKS 与 CVI 扩展 BAdI 一次讲透

SAP BP事务保存前校验机制解析 摘要:本文系统梳理了SAP BP事务保存前的校验机制,揭示了三种关键校验点的差异与适用场景: BDT框架DCHCK事件:最靠近UI层,适合屏幕字段级校验,但API调用时可能失效 Classic BAdI BUPA_FURTHER_CHECKS:全局拦截点,可阻断整个BP保存,适合核心业务规则 CVI扩展校验:仅管控供应商/客户段落,需注意可能产生"BP已保存但段落未保存"的情况 文章通过真实案例(如黑名单校验、付款冻结等)展示了各校验点的最佳实践,并特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

基于小波时频图与卷积神经网络的西储大学滚动轴承故障诊断

基于小波时频图与卷积神经网络的西储大学滚动轴承故障诊断内容:1.对西储大学轴承故障数据进行10分类产生小波时频图样本2.一份小波时频图转化转换程序3.一份cnn故障诊断程序。开发语言matlab在机械工程领域,滚动轴承的故障诊断至关重要,它关乎设备的正常运行与生产安全。本文将探讨如何利用小波时频图与卷积神经网络(CNN)对西储大学滚动轴承故障数据进行有效的故障诊断,且全程使用Matlab作为开发语言。

2503_93921629的博客 567

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 基于 脑电波数据的时频图 小波尺度图 FFT变化 Wigner-Ville图 小波分析图的数据介绍和程序实现
下一篇: 基于PSO-bp的电能质量信号分类
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交通上的硅基思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值