```python
#-*-coding:gbk-*-
import matplotlib.pyplot as plt
import numpy as np
import os
import chardet
def kernels(kernel_num):              #高斯滤波内核设置a=np.arange(kernel_num)+1for num in range((len(a)-1)//2):a[-(num+1)]=a[num]b= a.reshape(1,-1) ave=np.sum(b)#print(b)return b,ave
def datacreate(name):print('find ',name)path='./'+namef = open(path,'rb')  # 先用二进制打开data = f.read()  # 读取文件内容file_encoding = chardet.detect(data).get('encoding')  # 得到文件的编码格式input1 = open(path,'r', encoding=file_encoding)   #读取文件source = input1.read()source_list=source.split('\n')    #每行分割time_list=[]                          process_list=[]mean_list=[]max_list=[]print('initialize.....')for line in source_list:                     if '刀具异常磨损均值判断' not in line:            #识别存在平均值的行continuetime=line.split('[')#print(time)time=time[1].split(']')time_hour=time[0][6:8]+'--'+time[0][12:17]       #时间time_list.append(time_hour)process_num=time[1].split('样本子程序号')process_num=process_num[1].split(' ')           #程序号process_list.append(process_num[0])mean_num=process_num[-1].split('当前均值')mean_list.append(mean_num[-1])                     #均值max_num=process_num[-3].split('样本上限均值')max_list.append(max_num[-1])#print(max_num[-1],mean_num[-1])var_process=sorted(list(set(process_list)))        #去除重复值和排序if '2007' in var_process:var_process.remove('2007')if '7300' in var_process:                       #去除无效的波形var_process.remove('7300')plt.figure(figsize=(20,90))sum_process=len(var_process)             #看看有几个图for i,process in enumerate(var_process):mean_sums=[]time_display=[]for k,process_num in enumerate((process_list)):if process == process_num:mean_sums.append(mean_list[k])              #提取对的程序号的值time_display.append(time_list[k])           #同理,提取时间max_num=max_list[k]ax=plt.subplot(sum_process,1,i+1)#ax.plot([10,len(mean_sums)-10],[float(max_num),float(max_num)], color="red")#plt.plot([10,len(mean_sums)-10],[np.array(mean_sums,dtype=float).max(),np.array(mean_sums,dtype=float).max()], color="red")orign_data=np.array(mean_sums,dtype=float)  new_data=orign_data.copy()kernel,k=kernels(filt_size)for num in range(len(orign_data)-(filt_size-1)):#print((orign_data[num:num+5].reshape(-1,1)))if filt_size==1:breaknew_data[num+(int((filt_size-1)/2))]=(np.inner(orign_data[num:num+filt_size].reshape(1,-1),kernel))/k    #高斯滤波#new_data[num+(int((filt_size-1)/2))]=np.sum(orign_data[num]+orign_data[num+1]*2+orign_data[num+2]*3+orign_data[num+3]*2+orign_data[num+4])/9ax.plot(np.array(range(len(mean_sums))),new_data,label=str(process))   #numpy格式处理的快#plt.plot(11np.array(range(len(mean_sums))),orign_data,label=str(process),color="green")interval=int((len(mean_sums))//10)#for m in range(10):#plt.vlines(interval*m,np.array(mean_sums,dtype=float).min(),np.array(mean_sums,dtype=float).max(),color="red")#ax.text(interval*m,new_data.min(),str(time_display[interval*m]))ax.text(0,new_data.max(),'numbers='+str(len(mean_sums)))ax_top = ax.twiny()              #设置上下坐标轴一致xlim = ax.get_xlim()ax_top.set_xlim(xlim)  xticks = ax.get_xticks()#ax.set_xticks(xticks)ax.axhline(float(max_num), color="red")         #画上限线top_tick = []top_label = []for time_times in range(len(xticks)-2):        if xticks[time_times+1]>len(new_data):break#ax.axvline(xticks[time_times+1],linestyle='--',color="blue")top_tick.append(xticks[time_times+1])#print(time_times+1,xticks[time_times+1])top_label.append(time_display[int(xticks[time_times+1])]) # 这两行分别是要显示坐标的位置以及置换的标签if len(new_data)-top_tick[-1]>(top_tick[-1]-top_tick[-2])*0.5:#print(len(new_data),top_tick[-1],top_tick[-2])top_tick.append(len(new_data))top_label.append(time_display[-1])#ax.axvline(len(new_data),linestyle='--',color="blue")ax_top.set_xticks(top_tick)ax_top.set_xticklabels(top_label)ax.grid(ls='--')#plt.ylim(np.array(mean_sums,dtype=float).min(),float(max_num)+1)ax.legend()#plt.savefig('./'+name.split('.')[0]+'.png')print('have saved ...'+name.split('.')[0]+'.png')return new_dataall_name=os.listdir('./')
log_name=[]
filt_size = int(input('输入高斯滤波内核(原始图像输入1)(输入奇数)'))
for name in all_name:if  name[-3:]=='log':log_name.append(name)
print('找到这几个文件:')
print(log_name)
if not len(log_name)==1:name_num = int(input('转化第几个?'))     file=log_name[name_num-1]
else :file=log_name[0]
print(file)
new=datacreate(file)
![在这里插入图片描述](https://img-blog.csdnimg.cn/201909302012442.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMyODI0MzM1,size_16,color_FFFFFF,t_70)

针对刀具磨损的日志读取的曲线分析(一维高斯滤波及波形拟合)相关推荐

  1. 医学图像处理医学图像处理-卷积神经网络卷积神经网络_基于深度卷积神经网络的刀具磨损量自动提取方法...

    ⬆点击上方蓝色字体,关注<工具技术>官方微信~ 数控加工实质上是刀具和毛坯的相互运动,包含众多的不可控因素,在工件成型的过程中,刀具不可避免发生磨损.为了提高加工效率,实际加工中一般采用高 ...

  2. Caffe—根据log日志绘制loss曲线和accuracy

    本文在此只讲述Ubuntu16.04下 caffe训练日志绘制loss曲线以及accuracy 如果是windows平台直接跳转文末 caffe中其实已经自带了这样的小工具 caffe-master/ ...

  3. PHM2010刀具磨损数据集分享

    2010年phm大赛的刀具磨损检测数据 链接:https://pan.baidu.com/s/17GbX52SlPScsv0G7fDp5dQ 提取码:4561 数据集介绍 文件c1.c4.c6为训练数 ...

  4. 已阅论文汇总:刀具磨损测量/磨损检测/磨钝标准

    目录 注:论文路径 中-1964-刀具磨损的测量方法与磨钝标准 中-1996-刀具磨损型式与磨钝标准VB的选取 英-1997-使用立体图像测量和可视化三维刀具磨损 中-1998-刀具磨损标准的模糊确定 ...

  5. 发布 'xx' 的并发快照不可用,因为该快照尚未完全生成,或者日志读取器代理未运行,无法激活它。如果并发快照的生成过程中断,则必须重新启动用于该发布的快照代理,直到生成完整的快照。

    发布 'xx' 的并发快照不可用,因为该快照尚未完全生成,或者日志读取器代理未运行,无法激活它.如果并发快照的生成过程中断,则必须重新启动用于该发布的快照代理,直到生成完整的快照. 这些步骤是在分发服 ...

  6. Scheduled SQL: SLS 大规模日志上的全局分析与调度

    简介: 本文总结了大规模日志全局分析的需求,讨论SLS上现有的典型分析方案,并延伸到 SLS 原生数据处理方案,介绍 Schedueld SQL 功能与最佳实践. 大规模日志全局分析的需求 数据大规模 ...

  7. mysql配置日志老化配置_mysql中日志的配置与分析

    默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...

  8. datastage(IBM InfoSphere Information Server )日志的获取和分析

    在使用 IBM InfoSphere Information Server 的过程中我们经常会遇到一些问题,但如何来查找和诊断问题,对于一个刚刚使用 IBM InfoSphere Informatio ...

  9. 客户购买软件的心理曲线分析

    客户购买软件的心理曲线分析 博文导言:有近三个月没有更新博客了,不好意思,也许是工作忙,也许是不经意的淡忘,在这里对于关心我.爱护我的同事真诚的道歉,不能因为自已的懒惰,就忽略了与大家的知识和经验分享 ...

最新文章

  1. 人脸真伪验证与识别:ICCV2019论文解析
  2. python语言入门p-MicropPython的学习,如何从0到1?
  3. 学python好不好-26岁了,自学Python怎么样?
  4. HDU - 2859 Phalanx(动态规划/哈希表)
  5. 响应式编程知多少 | Rx.NET 了解下
  6. apache实验报告 linux_Linux实验报告
  7. apk提取加密素材_从apk包中提取unity资源
  8. JSP 文件上传下载系列之二[Commons fileUpload]
  9. mfc 对话框应用程序 如何利用按钮弹出另一对话框
  10. 学习使用windows live write.
  11. DMA映射 dma_addr_t
  12. 回顾·神马搜索技术演进之路
  13. Linux操作系统 —— 普通用户无权限执行命令怎么办
  14. 分享一个精灵盛典辅助工具挂机方案
  15. 数据库电话号码查询显示中间四位用****代替的SQL语句
  16. element-ui的走马灯详解
  17. 什么是GIS,GIS能干什么
  18. 三角形外接球万能公式_三棱锥外接球万能公式 什么是旁心
  19. Android 自定义评论回复view
  20. 养生主——离散数学篇

热门文章

  1. C/C++笔试题(11)
  2. 嵌入式文件系统损耗平衡算法
  3. PAT A1155 Heap Paths ——三更灯火五更鸡?
  4. 超级记忆法之110数字编码
  5. 虚拟机中输入ifconfig不显示ip地址,如何解决
  6. 杰理AC696N串口通信实验
  7. 虚拟机安装Linux系列教材 (二)- 关闭Hiper-V
  8. 后氧传感器正常数据_氧传感器电压多少正常?氧传感器数据流分析介绍
  9. 【Asp.net入门01】动态网站基础知识
  10. 从“挖光缆”到“剪网线”|蚂蚁金服异地多活单元化架构下的微服务体系