✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1完全自适应噪声集合经验模态分解与小波阈值降噪针对电梯运行数据中混有曳引机振动、轿厢共振等多源噪声的问题提出CEEMDAN与小波阈值联合降噪法。CEEMDAN将原始信号分解为多个固有模态函数IMF自适应添加白噪声改善模态混叠。计算每个IMF的连续均方误差曲线确定噪声主导模态与信号主导模态的分界点。对噪声主导模态进行软阈值小波降噪阈值采用无偏风险估计原则确定信号主导模态保持不变。重构后信号的信噪比较原始提升12dB保留了对电梯门机故障、平层精度偏差等特征频率。在电梯模拟实验台上该方法提取的故障特征与真实故障的相关系数达到0.91。2CNN-BiLSTM-注意力机制联合诊断模型为克服传统BiLSTM依赖人工特征提取的缺点构建了CNN-BiLSTM-AM端到端模型。一维CNN自动从降噪后的信号中提取局部冲击特征BiLSTM捕获前后向时序依赖注意力层加权不同时间步的重要性。在电梯平层感应器故障、抱闸间隙过小、门锁接触不良等六类故障数据上模型准确率达到96.3%比单独使用BiLSTM高6%。注意力可视化显示模型对于抱闸故障主要关注启动阶段的振动峰值而对门锁故障关注关门末端的电流脉动为故障机理分析提供了可解释性。3实验验证与对比分析采集曳引电梯实际运行中的振动、速度和电流信号采样频率1kHz每种工况记录50组数据。将CEEMDAN小波阈值预处理后的数据输入CNN-BiLSTM-AM与原始数据直接训练、仅CEEMDAN分解等方法进行对比。结果表明预处理使准确率从82%升至96%F1分数从0.79升至0.95。在未知载重变化空载、满载的泛化测试中模型仍保持91%的准确率展示了良好的鲁棒性。该诊断方法已集成至某电梯物联网网关实现实时诊断。import pywt import numpy as np from scipy.signal import hilbert from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, Bidirectional, LSTM, Attention, Dense, Flatten def ceemdan_wavelet_denoise(signal, max_imfs8, waveletdb4): # pseudo CEEMDAN decomposition (simplified using EMD) from PyEMD import CEEMDAN emd CEEMDAN() imfs emd(signal) noise_imfs imfs[:len(imfs)//2] signal_imfs imfs[len(imfs)//2:max_imfs] denoised_noise [] for imf in noise_imfs: coeffs pywt.wavedec(imf, wavelet, level3) sigma np.median(np.abs(coeffs[-1])) / 0.6745 threshold sigma * np.sqrt(2 * np.log(len(imf))) coeffs_thresh [coeffs[0]] [pywt.threshold(c, threshold, modesoft) for c in coeffs[1:]] denoised_imf pywt.waverec(coeffs_thresh, wavelet) denoised_noise.append(denoised_imf[:len(imf)]) reconstructed np.sum(denoised_noise, axis0) np.sum(signal_imfs, axis0) return reconstructed def cnn_bilstm_attention_model(input_shape, num_classes): model Sequential() model.add(Conv1D(filters32, kernel_size3, activationrelu, input_shapeinput_shape)) model.add(Conv1D(filters64, kernel_size3, activationrelu)) model.add(Bidirectional(LSTM(64, return_sequencesTrue))) model.add(Attention()) model.add(Flatten()) model.add(Dense(64, activationrelu)) model.add(Dense(num_classes, activationsoftmax)) model.compile(optimizeradam, losscategorical_crossentropy, metrics[accuracy]) return model def multi_fault_diagnosis(signal, model): denoised ceemdan_wavelet_denoise(signal) input_tensor denoised.reshape(1, -1, 1) pred model.predict(input_tensor) return np.argmax(pred) ,如有问题可以直接沟通