初2学生小馒头:解锁学习新姿势,闪耀青春无限光芒

核心内容摘要

窥探禁忌边缘,解锁心底深处的隐秘渴望:葵司《当着丈夫的面被耍》带你体验前所未有的震撼
孟若羽夏晴子:黑白配的奇妙缘分,如何谱写初遇的华章?

六年级女生用白袜子当奖励,温暖了整个校园

以角域重采样和阶次分析为核心通过将时域振动信号转换为转速不变的阶次域表示消除了转速波动对故障诊断的影响结合希尔伯特包络分析增强周期性冲击特征并利用一维CNN进行多类别故障分类还引入了Grad-CAM可解释性分析生成注意力热力图直观展示模型决策依据实现了从数据预处理、特征提取、模型训练到可视化解释的完整端到端智能诊断流程提升了轴承等旋转机械故障诊断的准确性、鲁棒性和可解释性。

算法步骤

数据加载与预处理加载CWRU轴承振动数据集提取转速信息并计算旋转频率故障类型自动识别与标签编码

角域重采样将时域信号从时间域转换到角度域基于转速进行线性插值实现均匀角度采样消除转速波动对分析结果的影响

包络分析应用希尔伯特变换提取信号包络增强周期性冲击特征轴承故障特征抑制非周期噪声干扰

阶次谱生成对角度域包络信号进行FFT变换生成与转速无关的阶次谱cycles/revolution实现故障特征的转速不变表示

时-阶次谱分析滑动窗口分段处理对每个窗口进行阶次分析生成阶次随时间演化的二维谱图

深度学习分类一维CNN提取深度特征多类别故障分类正常/内圈/外圈故障模型训练与优化

可解释性可视化Grad-CAM生成注意力热力图可视化模型关注的关键特征区域提供分类决策的直观解释

结果评估与展示自动峰值检测与标注多视图可视化时域、频域、阶次域故障诊断结果综合展示class CWRUDataLoader: def __init__(self, base_path): 初始化CWRU数据加载器 Args: base_path (str): CWRU数据集根目录路径 self.base_path Path(base_path) self.fs 12000 # 采样频率12kHz self.n_rev 64 # 每转采样点数 # 数据存储 self.X None # 时域信号 self.Y None # 故障标签 self.rpm None # 转速标量 self.filename None # 文件名 # 故障类型映射字典 self.fault_types { normal: 0, ball: 1, inner_race: 2, outer_race: 3 } def get_label_from_path(self, file_path: Path) - int: 从文件路径中提取故障标签 Args: file_path (Path): 数据文件路径 Returns: int: 故障类型编码 (0-

# 将路径转换为字符串 path_str str(file_path) # 根据路径中的关键词判断故障类型 if Normal in path_str or normal in path_str: return self.fault_types[normal] elif Ball in path_str or B in path_str or ball in path_str: return self.fault_types[ball] elif IR in path_str or Inner in path_str or inner in path_str: return self.fault_types[inner_race] elif OR in path_str or Outer in path_str or outer in path_str: return self.fault_types[outer_race] # 尝试从父目录名判断 parent_dir file_path.parent.name if Normal in parent_dir: return self.fault_types[normal] elif B in parent_dir: return self.fault_types[ball] elif IR in parent_dir: return self.fault_types[inner_race] elif OR in parent_dir: return self.fault_types[outer_race] print(fWarning: Could not determine fault type from path: {path_str}) return -1 # 未知类型 def extract_rpm_value(self, rpm_data): 从MATLAB加载的RPM数据中提取标量值 Args: rpm_data: 从MATLAB加载的RPM数据 Returns: float: RPM标量值 # 如果rpm_data是NumPy数组提取标量值 if isinstance(rpm_data, np.ndarray): # 扁平化并取第一个元素 rpm_flat rpm_data.flatten() if len(rpm_flat) 0: return float(rpm_flat[0]) # 如果是列表或其他类型 if isinstance(rpm_data, (list, tuple)): if len(rpm_data) 0: return float(rpm_data[0]) # 如果是标量 try: return float(rpm_data) except: print(fWarning: Could not extract RPM value from: {rpm_data}) return

0 def import_cwru_data(self, file_keys: list): 加载CWRU数据集文件 Args: file_keys (list): 文件标识符列表 Returns: tuple: (X, Y) - 时域信号和故障标签 base_path_obj Path(self.base_path) for key in file_keys: # 解析文件标识符如105DE - 105, DE match re.match(r(\d)(\w), key) if not match: print(fError: Invalid file key format: {key}) continue file_num_str, data_key match.groups() # 查找匹配的MAT文件 glob_pattern f{file_num_str}_*.mat found_files list(base_path_obj.rglob(glob_pattern)) if not found_files: print(fError: No file found for pattern: {glob_pattern}) continue file_path found_files[0] self.filename file_path.name # 设置文件名 print(fLoading file: {self.filename}) # 加载MATLAB数据 mat_data loadmat(file_path) # 提取故障标签 label self.get_label_from_path(file_path) # 查找RPM和信号数据键 rpm_key None mat_key None for key_name in mat_data.keys(): if not key_name.startswith(__): # 跳过MATLAB元数据 if RPM in key_name.upper(): rpm_key key_name elif data_key in key_name: mat_key key_name if rpm_key is None: print(fWarning: No RPM data found in {self.filename}) rpm_value

0 else: # 提取RPM标量值 rpm_value self.extract_rpm_value(mat_data[rpm_key]) if mat_key is None: print(fError: No data found for key {data_key} in {self.filename}) continue # 提取时域信号 time_series mat_data[mat_key].flatten() # 存储数据 self.rpm rpm_value self.X np.array(time_series) self.Y label # 打印加载信息 print(fLoaded {len(self.X)} samples from {self.filename}) print(fRPM: {self.rpm}, Label: {self.Y}) return self.X, self.Y return None, None参考文章OrderCam-Diag基于阶次分析和类激活映射的旋转机械可解释故障诊断Python - 哥廷根数学学派的文章https://zhuanlan.zhihu.com/p/2002062403219763577担任《Mechanical System and Signal Processing》《中国电机工程学报》《宇航学报》《控制与决策》等期刊审稿专家擅长领域信号滤波/降噪机器学习/深度学习时间序列预分析/预测设备故障诊断/缺陷检测/异常检测。

糖心破解版官方版-糖心破解版官方版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123