当前位置: 首页 > news >正文

批量读取Excel生成.mat矩阵

利用格兰姆角场(GADF和GASF)方法将时间序列遍历转二维图像,可以使用图像处理网络进行故障诊断、模式识别、预测等 1:批量读取Excel数据,整合成.mat矩阵文件; 2:对循环读取数据样本生成格兰姆角场场矩阵; 3:循环导出到单独文件夹,图像格式.jpg,图像格式可以更改 4:程序有详细注释,可以轻松编辑和替换自己的数据

最近在工业数据可视化分析中发现个有意思的玩法——用格兰姆角场(GAF)把振动信号这类时间序列转成二维图像。这种转换相当于给数据拍了个"X光片",原本肉眼难辨的波形特征在图像里会显露出明显的纹理结构,直接扔给CNN做分类效果出乎意料。

先看实战代码。假设我们有一批存放在./dataset目录下的Excel振动数据,每个文件包含单通道采样数据:

import os import pandas as pd import scipy.io as sio data_folder = './dataset' output_mat = 'all_signals.mat' file_list = [f for f in os.listdir(data_folder) if f.endswith('.xlsx')] signals = [] for idx, file in enumerate(file_list): df = pd.read_excel(os.path.join(data_folder, file)) signals.append(df.values.reshape(-1)) # 展平为一维时间序列 print(f'Loaded {file} with {len(signals[-1])} points') # 保存为MATLAB兼容格式 sio.savemat(output_mat, {'signals': signals}) print(f'Data consolidated in {output_mat}')

这段代码里有个细节:为什么要用.mat格式做中间存储?实际测试发现,当处理上千个样本时,直接内存操作容易爆,用矩阵文件做缓存更稳定,还能兼容MATLAB处理流程。

利用格兰姆角场(GADF和GASF)方法将时间序列遍历转二维图像,可以使用图像处理网络进行故障诊断、模式识别、预测等 1:批量读取Excel数据,整合成.mat矩阵文件; 2:对循环读取数据样本生成格兰姆角场场矩阵; 3:循环导出到单独文件夹,图像格式.jpg,图像格式可以更改 4:程序有详细注释,可以轻松编辑和替换自己的数据

关键步骤来了——GAF矩阵生成。核心是把一维信号先映射到极坐标系,再通过角度和/差的三角函数转换:

import numpy as np from PIL import Image def normalize(x): # 将信号归一化到[-1,1]区间 return (x - np.min(x)) / (np.max(x) - np.min(x)) * 2 - 1 def gasf(series): # 生成Gramian Angular Summation Field series = normalize(series) radian = np.arccos(series) # 关键转换步骤 matrix = [] for i in radian: row = np.cos(radian + i) matrix.append(row) return np.array(matrix) def gadf(series): # 生成Gramian Angular Difference Field series = normalize(series) radian = np.arccos(series) matrix = [] for i in radian: row = np.sin(radian - i) # 与GASF的区别点 matrix.append(row) return np.array(matrix)

注意arccos转换前的归一化必须严格控制在[-1,1],否则会得到虚数。有个工程经验:对于存在异常点的工业数据,用中位数归一化比最大最小值更鲁棒。

图像生成环节要处理颜色映射。这里用PIL库的Image.fromarray直接转换,但原始GAF矩阵值域在[-1,1],需要线性拉伸到0-255:

def matrix_to_image(matrix, output_path): img_data = ((matrix + 1) * 127.5).astype(np.uint8) img = Image.fromarray(img_data) img.save(output_path) print(f'Image saved to {output_path}')

最后组装完整流程。假设我们要为每个样本生成GASF和GADF两种图像:

output_folder = './gaf_images' os.makedirs(output_folder, exist_ok=True) signals = sio.loadmat('all_signals.mat')['signals'] for i, sig in enumerate(signals): gasf_matrix = gasf(sig[0]) # 注意MATLAB加载后的维度 gadf_matrix = gadf(sig[0]) matrix_to_image(gasf_matrix, f'{output_folder}/sample_{i}_gasf.jpg') matrix_to_image(gadf_matrix, f'{output_folder}/sample_{i}_gadf.jpg')

实际应用中发现,GAF图像对采样长度敏感。当序列超过5000点时,生成的5000x5000图像会超出普通GPU显存。解决方法有两个:要么做等距降采样,要么改用格拉姆矩阵的池化版本。

这类图像在轴承故障诊断中效果显著。实验对比显示,使用ResNet18在GAF图像上的分类准确率比原始时域信号高17%左右。更妙的是,不同故障类型在GAF图中呈现出明显的区域分块特征——内圈故障表现为斜条纹,外圈故障则显示蜂窝状结构,这为可解释性分析提供了直观依据。

http://www.jsqmd.com/news/518665/

相关文章:

  • 基于Python的农业设备租赁系统毕业设计源码
  • 领航追随法:车辆编队的智慧指挥官
  • 五次多项式与改进Sigmoid混合曲线融合的平行泊车路径规划代码,克服双重缺陷,满足曲率约束条件
  • 卫星轨道六要素详解:从火箭残骸到GPS卫星的追踪原理
  • 避坑指南:Xcode 15下OC与Swift混编的5个常见编译错误及修复方法
  • YOLOv8改进之Involution:反转卷积思想,核在空间上共享但在通道上特异,减少冗余
  • AI 辅助编程革命:如何利用 GitHub Copilot 等工具重塑开发效率
  • 光伏锂电池储能功率协调控制系统仿真 [1]左侧光伏Boost控制部分:采用扰动观察法来进行MP...
  • Pollinations.AI 免费文生图实战:5分钟搞定自定义图片生成(附完整API参数指南)
  • 基于vue+python智能医疗辅助就诊系统
  • 手把手教你用Gitee+奇安信代码卫士扫描Java-sec-code靶场(含详细漏洞修复指南)
  • 计算机毕业设计:Python图书数据可视化分析系统 Flask框架 可视化 爬虫 书籍 大数据 机器学习(建议收藏)✅
  • ESP32以太网配置门户库:W6100+ConfigPortal一体化方案
  • YOLOv8改进系列:C2f模块全面升级——从C2f到C2f-Faster、C2f-DCN的高效变体实战
  • 基于Webots的轮腿机器人仿真模型:包括轮足设计、PID运动控制及运动学逆解算法,支持多种动...
  • SQLMap Tamper脚本开发指南:从修改到编写你的第一个绕过脚本
  • 分享创业失败后加入格行科技随身WiFi代理项目的成功经验,介绍代理邀请码888886的优势与机遇 - 格行招商部总监张总
  • ArcScene点云可视化进阶:如何自定义RGB颜色映射打造专业级三维效果
  • GhostConv:YOLOv8 的轻量化利器,通过廉价线性变换实现高效目标检测
  • trae的ai终端执行都要在前面加上
  • YOLOv8巅峰之作:引入DynamicConv动态卷积,自适应能力暴涨,小目标检测精度提升显著
  • 无线功率传输三相两电平逆变器供电的无刷直流电机仿真 Matlab/simulink仿真(201...
  • T样条实战:如何在Autodesk Fusion360中设计汽车B柱并导入LS-DYNA分析
  • 手把手教你用开疆智能网关搞定PROFINET与EtherCAT混搭网络(附TIA Portal配置避坑点)
  • 希音Shein开放平台接口实战:从零到数据采集的完整流程(附常见问题解决方案)
  • LangGraph实战:多智能体协作系统的设计与实现
  • 拿到一张声纳图,第一件事当然是把它读进来。MATLAB的imread函数闭着眼都能写出来
  • 无刷直流电机PI控制:Matlab/Simulink仿真搭建及其相关内容
  • Python基础入门:变量、数据类型与运算符完全指南
  • 5分钟搞定前后端无感刷新:accessToken与refreshToken实战指南(含axios拦截器配置)