import csv,codecs
import pandas as pd
import pywt
import os
from time import sleep
import numpy as np
from tqdm import tqdm
"""用来确定y坐标名称"""
def sgn(x):
if x>0:
return 1
elif x<0:
return -1
else:
return 0
"""小波去噪(wavelets denosing)"""
def Wavelts_Denoising(signal, wavefunc, level, startlever,endlever):
coeff = pywt.wavedec(signal, wavefunc, mode='sym', level=level) #分解
for i in range(startlever, endlever + 1):
cD=coeff[i-1]
Sum = 0.0
Sum = Sum + abs(i)
N=len(cD)
# 选取小波系数层数为 m~n层,尺度系数不需要处理
for j in range(len(cD)):
Sum = (1.0 / float(N)) * Sum
sigma = (1.0 / 0.6745) * Sum
Tr = sigma *np.sqrt(2 * np.log(len(cD))) # 计算阈值
if abs(cD[j])>= Tr:
cD[j] = sgn(cD[j])*(abs(cD[j])- Tr) # 向零收缩
else:
cD[j] = 0 # 去噪过程
signal_denoised = pywt.waverec(coeff, wavefunc) # 重构
return signal_denoised
"""峰值"""
def Peak_Value(signal,devision_length):
m=int(len(signal)/devision_length)
aa=[]
for i in range(devision_length):
a=max(signal[i*m:(i+1)*m])
aa.append(a)
return np.mean(aa)
"""均值"""
def Mean_Value(signal):
signal=[abs(a) for a in signal]
return np.mean(signal)
"""均方根"""
def Root_Mean_Square(signal):
length=len(signal)
x=sum([a*a for a in signal])/length
return np.sqrt(x)
"""峭度指标"""
def Kurtosis_Value(signal):
rms1=Root_Mean_Square(signal)
length=len(signal)
x1=sum([pow(a,4) for a in signal])/length
return x1/pow(rms1,4)
"""定义保存数据函数"""
def data_write_csv(file_name, datas):
file_csv = codecs.open(file_name,'w+','utf-8')
writer = csv.writer(file_csv, delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL)
for data in datas:
writer.writerow(data)
print("处理结束,保存文件成功!")
"""读取所有文件+特征提取"""
def signal_processing(signal):
signal.columns = ['a']
signal_denoised = Wavelts_Denoising(list(signal['a']), 'haar', 7, 1, 4)
pv = Peak_Value(signal_denoised, 10)
mv = Mean_Value(signal_denoised)
rms = Root_Mean_Square(signal_denoised)
par = pv / rms
kv = Kurtosis_Value(signal_denoised)
ff = rms / mv
return [pv, ',', mv, ',', rms, ',', par, ',', kv, ',', ff]
"""训练集特征+测试集特征"""
def run_feature_extraction(files):
feature_data=[]
print("检测到%2d个数据文件,处理进度:"%len(files))
for i in tqdm(range(0,len(files))):
sleep(0.05)
data=pd.read_csv(files[i],header=None,sep='\t')
all_signal=data.iloc[:,0:1]
a1=signal_processing(all_signal)
feature_data.append(a1)
data_write_csv('Feature_Extraction.csv', feature_data)
"""执行保存数据函数,将处理好的数据保存到Feature Extraction.csv文件"""
try:
file_location=input(str('文件地址输入格式:C:\\\\testdata\\\\1nd_test\\\\')+"\n请输入数据绝对地址:")
for root, dirs, files in os.walk(file_location):
files=[file_location+x for x in files]
run_feature_extraction(files)
except:
print("文件地址错误或数据读取错误!")
Feature_Extraction.rar_extraction_numpy 均方根_python 波形因子_时域指标_波形特
版权申诉
117 浏览量
2022-07-15
21:09:19
上传
评论
收藏 2KB RAR 举报
林当时
- 粉丝: 98
- 资源: 1万+
最新资源
- 基于matlab实现的这是很全面偏最小二乘法程序,并且具有中文注释,有效帮助大家利用PLS算法.rar
- base.apk.1
- 基于matlab实现的在open shop情形下,采用遗传算法生成最优调度方案,所得Pareto解释最优的.rar
- 基于matlab实现的增量极限学习机,在线学习的方法等等,实现了在线连续学习功能.rar
- 知识领域: 前端开发 技术关键词: HTML、CSS、JavaScript、React
- 第18届智能车竞赛极速越野组代码.zip
- 插件,帮助找工作,筛选掉僵尸岗位
- 知识领域: 人工智能 技术关键词: 深度学习、神经网络、自然语言处理 内容关键词: 模型训练、数据标注、模型部署
- 用于人脸检测的 YOLOv8 该项目是 ultralytics 存储库的分支 他们制作了一个简单的界面,用于训练和运行推理 模型
- 大创大学生创新创业训练项目管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0