资讯动态

行星齿轮箱时频特征故障诊断:原理与Python实现

发布时间:2026/10/17 12:40:41 来源:尧图企业网站定制
行星齿轮箱这类设备在风电、矿机、盾构、直升机主减速器里几乎都是核心传动件。它的特点是结构紧凑、传动比大、承载能力强但诊断起来远比普通定轴齿轮箱麻烦。这些年我在设备健康管理项目里处理最多的就是行星齿轮箱的振动数据说实话光靠传统频谱看基频、倍频那一套经常被多级啮合产生的复杂边带搞晕。后来真正让我觉得“够用”的是转向时频特征组合——把振动信号在时间、频率两个维度同时打开再结合故障特征频率去锁定异常能量。这篇文章就围绕“行星齿轮箱时频特征故障诊断”展开我会把完整的技术思路、特征频率推导、从信号预处理到时频特征提取再到故障判别的整套 Python 代码都放出来。适合刚接触设备故障诊断的工程师、研究生也适合想从“看频谱”升级到“多维度分析”的现场技术人员。废话不多说先把最难的部分摆到台面上讲清楚。1. 行星齿轮箱的诊断难点与时频分析的价值1.1 为什么行星齿轮箱比定轴齿轮箱难诊断先说一个现场很常见的现象同一台设备定轴齿轮箱齿面点蚀频谱上很容易看到啮合频率的幅值变化和明显的边带但换成行星齿轮箱同样程度的故障频谱上往往只有一个不太起眼的“鼓包”边带乱成一团甚至看不出规律。这不是传感器灵敏度的问题而是行星齿轮箱的传动结构决定了振动信号天然复杂。行星齿轮箱的功率传递路线是太阳轮同时和多个行星轮啮合行星轮又同时和齿圈啮合。这意味着同一时刻有多个啮合点在工作每个啮合点到传感器外壳的传递路径都不同。行星架旋转时各个行星轮不断改变位置振动从不同啮合点传到传感器上的路径长度和衰减程度一直在变化传感器拾取的信号实际上是多路啮合振动信号的叠加。这种“时变传递路径”效应是行星齿轮箱故障诊断最大的拦路虎。另一个麻烦在于低转频部件。输出轴转速往往很低行星架转频可能只有几个赫兹故障特征频率甚至低于 10 Hz。低频段的信噪比差现场又有各种背景噪声和结构共振干扰想在原始频谱里直接把这些特征抠出来几乎不可能。还有一个工程上的坑行星齿轮箱换不同的工况比如负载从 30% 升到 100%载荷分布不均会导致各行星轮分担的载荷不一样振动幅值和边带结构都会变化。现场数据往往不是实验室那种稳定转速、稳定载荷的干净信号转速波动、负载波动才是常态。对于这种本质非平稳的系统单独用一段时域波形的 RMS 值或者单独用一张 FFT 频谱丢失的信息都太多。1.2 时频分析到底切中了哪些痛点时频特征这张牌的好处是可以把“什么时候出现异常能量”和“异常能量出现在什么频率”两件事同时讲清楚。比如行星架的 7.5 Hz 转频成分会周期性地改变传递路径这会让故障冲击的幅值也随 7.5 Hz 周期波动——这种现象在时域波形里表现为“一阵强、一阵弱”在频谱里表现为对啮合频率的调幅边带。如果只在频域看你看到的是很多根谱线很难确定这些边带是真实的故障调制还是结构共振造成假象加上时频图像后能量随时间的周期性变化一目了然。时频分析对转速波动也更宽容。短时傅里叶变换或者同步压缩小波变换自带“局部时间窗”的属性即便转速在小范围内波动只要窗内信号近似平稳依然能较清晰地看到频率成分的连续轨迹。相比之下整段信号一次性做 FFT转速波动会把谱线抹宽、能量摊薄故障特征频率的峰值幅度会被严重低估。还有一个实际原因是便于可视化汇报。现场拍板要不要停机检修往往需要直观证据。一张时频谱图异常能量带、边带周期、冲击间隔看图的工程师和操作员都能快速理解而单纯一堆谱线数字只能靠分析人员口头解释很容易被挑战“凭什么说这台设备有问题”。2. 整体方案设计仿真信号、故障特征与算法选型2.1 算清楚特征频率再动手不管用什么高级算法第一件事永远是算特征频率。行星齿轮箱故障诊断说白了就是找“齿轮箱里哪个部件在啮合频率附近产生了不该有的调制和冲击”而所有调制频率都和各部件的转频、啮合频率有关。以最常见的固定齿圈、太阳轮输入、行星架输出的单级行星齿轮箱为例我取一组典型参数齿圈齿数 Z_r72太阳轮齿数 Z_s24行星轮齿数 Z_p24行星轮个数 N_p3输入轴转频 f_s30 Hz对应 1800 RPM。固定齿圈传动结构的转速关系是行星架转频 f_c f_s × Z_s / (Z_s Z_r) 30 × 24 / 96 7.5 Hz。太阳轮与行星架之间的相对转频 f_sun_rel f_s - f_c 22.5 Hz。啮合频率 f_m 由太阳轮与任一行星轮的啮合决定公式为 f_m (f_s - f_c) × Z_s 22.5 × 24 540 Hz它也等于 f_c × Z_r 7.5 × 72 540 Hz。啮合频率是整台齿轮箱振动能量的主峰所在。局部故障的特征频率则与故障部件相关我按常用的工程简化公式整理成表后面仿真和包络谱特征提取都会用到部件特征频率公式本例数值啮合频率f_m (f_s - f_c) × Z_s f_c × Z_r540 Hz太阳轮局部故障N_p × (f_s - f_c)67.5 Hz行星轮局部故障2 × f_m / Z_p45 Hz齿圈局部故障f_m / Z_r7.5 Hz行星架转频f_c7.5 Hz太阳轮调制边带间隔f_s - f_c22.5 Hz这里有一点特别容易混淆边带间隔和故障冲击频率不是一回事。频谱上太阳轮故障会在啮合频率两侧产生以 f_sun_rel22.5 Hz 为间隔的调制边带而包络谱中太阳轮故障的冲击特征峰在 N_p×(f_s - f_c)67.5 Hz。现场分析时如果不把这两个量分开很容易误判。2.2 仿真信号怎么搭才能贴近真实实验室设备能拆开来人为制造磨损但大多数工程师手里只有现场在线监测数据缺少“已知故障标签”样本来验证算法。我的做法是先用仿真信号把算法流程跑通让每个特征量都有确定的“标准答案”再去处理真实数据。仿真信号搭得好不好直接决定后面特征提取方法验证的可靠性。健康行星齿轮箱振动主要由啮合频率及其谐波构成并带有一定程度的调制太阳轮转频对啮合振动产生小幅调幅行星架通过时也会引起幅值波动。因此健康信号可以写成x_health(t) A1 × cos(2π f_m t) × [1 m1×cos(2π f_sun_rel t) m2×cos(2π f_c t)] A2 × cos(4π f_m t φ) n(t)其中 m10.05、m20.05 是健康状态下的小调制系数n(t) 是高斯白噪声。太阳轮齿根裂纹故障时故障齿每通过一个行星轮就会产生一次冲击冲击周期是 1/67.5 秒左右。同时啮合刚度波动增大啮合频率处的幅值调制明显加深。故障信号我在健康信号基础之上额外叠加周期性瞬态冲击序列和更强的调幅项x_fault(t) x_health(t) A_imp × Σ exp(-β(t-t_k)) × sin(2π f_r (t-t_k)) × u(t-t_k) ΔA × cos(2π f_m t) × cos(2π f_sun_rel t)冲击间隔 1/67.5 s衰减系数 β 控制冲击衰减快慢f_r 取结构共振频率附近的 2700 Hz。这样构造出来的故障信号理论上同时具备调制边带、周期性冲击和高频共振衰减三类特征正好用来检验后面的特征提取手段。为什么不直接采集一组真实故障数因为真实数据里故障类型、程度、转速负载都是交叉耦合的仿真信号反而能单独控制变量。建议一定要在仿真信号层面把“特征-故障”对应关系摸清楚再上现场数据否则调参都没有参照物。2.3 STFT、CWT、HHT 怎么选时频分析算法很多不会全用到生产项目里。下面这张表我把三个常用方法的定位和适用场景整理了出来后面代码里也主要围绕前两种展开。方法原理要点优点缺点适用场景STFT 短时傅里叶变换对信号分段加窗后逐段做 FFT实现简单、物理意义直观、计算快时间频率分辨率受窗长限制不能同时最优转速相对稳定、需要快速出图的在线监测CWT 连续小波变换用可变尺度的小波基与信号内积低频处频率分辨率高适合多分辨率分析计算量大小波基和尺度选择有讲究冲击特征明显、需要捕捉瞬态成分的离线分析HHT 希尔伯特-黄变换经验模态分解加希尔伯特谱自适应性强非常适合非平稳非线性信号模态混叠、端点效应处理麻烦剧烈非平稳、变速变载严重的深度分析我个人的经验是日常诊断先用 STFT 快速看全局找到可疑频带后再用 CWT 放大看细节HHT 属于“攻坚武器”信号平稳度很差时才搬出来。三者的组合比任何单一算法都稳。3. 代码实现从特征提取到故障判别的完整流程3.1 环境依赖与工程结构代码基于 Python 3.9核心依赖是 NumPy、SciPy、Matplotlib再加一个 PyWavelets 用于连续小波变换。这些库都可以用 pip 直接安装pip install numpy scipy matplotlib pywavelets工程结构我会按下面这样组织信号生成、特征提取、故障判别各归各的模块方便后面换成真实数据时只替换数据读取部分planetary_gearbox_diagnosis/ ├── config.py # 齿轮箱参数、采样率、特征频率 ├── signal_sim.py # 健康/故障信号仿真 ├── feature_extract.py # STFT、包络谱、统计特征 ├── fault_decision.py # 阈值判别逻辑 ├── run_demo.py # 一键运行脚本 └── output/ # 图像和中间结果输出目录3.2 信号仿真与预处理代码先来看参数配置。采样率我取 8192 Hz采样时长 4 秒。这个采样率既能覆盖 540 Hz 啮合频率和 2700 Hz 结构共振频率又不至于让数据量太大。4 秒时长对 7.5 Hz 的行星架转频来说能包含 30 个完整周期足够观察周期调制规律。import numpy as np from scipy.signal import hilbert, stft, find_peaks # -------- 齿轮箱基础参数 -------- Z_r 72 # 齿圈齿数 Z_s 24 # 太阳轮齿数 Z_p 24 # 行星轮齿数 N_p 3 # 行星轮个数 f_s 30.0 # 太阳轮输入转频 Hz fsample 8192 # 采样率 duration 4.0 # 采样时长秒 n_samples int(fsample * duration) t np.arange(n_samples) / fsample # -------- 特征频率推导 -------- f_c f_s * Z_s / (Z_s Z_r) # 行星架转频 7.5 Hz f_sun_rel f_s - f_c # 太阳轮相对转频 22.5 Hz f_m (f_s - f_c) * Z_s # 啮合频率 540 Hz f_sun_def N_p * (f_s - f_c) # 太阳轮故障冲击频率 67.5 Hz f_planet_def 2 * f_m / Z_p # 行星轮故障特征频率 45 Hz f_ring_def f_m / Z_r # 齿圈故障特征频率 7.5 Hz print(f行星架转频: {f_c:.2f} Hz) print(f太阳轮相对转频: {f_sun_rel:.2f} Hz) print(f啮合频率: {f_m:.2f} Hz) print(f太阳轮故障特征频率: {f_sun_def:.2f} Hz)接下来是健康信号和太阳轮故障信号的仿真。故障信号的关键在于周期性冲击序列我先创建一个冲击起始时刻数组从 0 开始每隔 1/67.5 秒出现一次冲击每个冲击点触发一个衰减振荡。这个过程用向量化写法避免 for 循环速度快得多对初学者也友好。def generate_health_signal(t, fs): 健康信号啮合频率为主附正常调制和二阶谐波 m1, m2 0.05, 0.05 A1, A2 0.5, 0.15 x (A1 * np.cos(2 * np.pi * f_m * t) * (1 m1 * np.cos(2 * np.pi * f_sun_rel * t) m2 * np.cos(2 * np.pi * f_c * t))) x A2 * np.cos(2 * np.pi * 2 * f_m * t 0.3) noise np.random.default_rng(42).normal(0, 0.02, t.shape) return x noise def generate_sun_fault_signal(t, fs): 太阳轮齿根裂纹故障信号调制加深 周期性冲击串 x generate_health_signal(t, fs) # 调制加深部分 delta_mod 0.22 * np.cos(2 * np.pi * f_m * t) * np.cos(2 * np.pi * f_sun_rel * t) x delta_mod # 周期性冲击 A_imp 0.35 beta 600.0 f_res 2700.0 period 1.0 / f_sun_def t_start np.arange(0, duration, period) for ts in t_start: tk t - ts mask (tk 0) (tk 0.05) # 冲击长度限制在 50ms x[mask] (A_imp * np.exp(-beta * tk[mask]) * np.sin(2 * np.pi * f_res * tk[mask])) return x这里有个细节值得单独说冲击衰减系数 β 取 600意味着衰减到 1/e 的时间大约是 1.7 ms对应结构共振 2700 Hz 振荡约 4~5 个周期。β 太大会让冲击几乎变成一个瞬时的窄脉冲能量散到整个频带包络谱里反而看不清β 太小则冲击拖尾和相邻冲击重叠模拟出来的就不是“故障冲击”而是“连续振动”了。3.3 时频特征提取代码有了信号之后特征提取是整个诊断流程的核心。我从四个维度入手时频谱能量分布、包络谱峰值、边带能量比和统计指标。这四者的侧重点不同结合起来能互相印证。STFT 采用 1024 点 Hann 窗、重叠 512 点。1024 点窗在 8192 Hz 采样率下对应 0.125 秒频率分辨率约 8 Hz。要问为什么不是 256 点窗太短时频率分辨率太粗540 Hz 和另一根 640 Hz 的谱线可能叠在一起分不开窗太长则时间分辨率变差7.5 Hz 的调制周期跟不上。1024 点是个兼顾两者的折中。def extract_stft_features(x, fs): 短时傅里叶变换提取啮合频带及边带能量 返回时频谱矩阵、时间轴、频率轴 f, t_spec, Zxx stft(x, fsfs, nperseg1024, noverlap512, windowhann, detrendFalse) spec_mag np.abs(Zxx) # 计算啮合频带能量 band_mask (f f_m - 20) (f f_m 20) mesh_energy np.sum(spec_mag[band_mask, :], axis0) # 计算左侧边带能量f_m - 22.5 附近作为代表 sb_mask (f f_m - f_sun_rel - 5) (f f_m - f_sun_rel 5) side_energy np.sum(spec_mag[sb_mask, :], axis0) return f, t_spec, spec_mag, mesh_energy, side_energy包络谱分析是行星齿轮箱故障诊断里必不可少的一环。原理不复杂先对信号做 Hilbert 变换得到解析信号取模得到包络再对包络做 FFT。包络谱能把故障冲击的周期性从载波调制中分离出来。太阳轮故障特征频率 67.5 Hz 附近的突出峰值就是断齿或裂纹的强证据。def extract_envelope_spectrum(x, fs): Hilbert 包络谱提取结构共振带内的故障冲击特征 analytic hilbert(x) envelope np.abs(analytic) # 对包络信号做 FFT使用中值去趋势避免直流偏置 envelope envelope - np.median(envelope) spec np.abs(np.fft.rfft(envelope)) freqs np.fft.rfftfreq(len(envelope), d1/fs) return freqs, spec def extract_statistics(x): RMS、峭度、峰值因子等统计特征 rms np.sqrt(np.mean(x**2)) kurt (np.mean((x - np.mean(x))**4) / (np.std(x)**4 1e-12)) - 3 peak_factor np.max(np.abs(x)) / (rms 1e-12) return rms, kurt, peak_factor峭度这里我要专门提一下我采用的是“超额峭度”减去了 3所以健康高斯信号的理论峭度接近 0而不是 3。很多初学者在代码里看着峭度值 3 觉得“怎么这么高”其实是对定义理解偏了。后面判别阈值我按超额峭度写。边带能量比也能反映调制强度。健康的行星齿轮箱也会有边带但边带能量相对载波能量很低一旦某个齿轮发生局部损伤边带能量会显著抬升。边带因子定义为故障调制边带能量与啮合载波能量的比值这个系数对故障很敏感但对转速波动相对不敏感。def compute_sideband_factor(x, fs): 边带因子f_m ± f_sun_rel 边带能量 / 啮合主频能量 f, spec extract_envelope_spectrum(x, fs) def band_energy(freqs, spec, center, half_width3.0): mask (freqs center - half_width) (freqs center half_width) return np.sum(spec[mask] ** 2) e_carrier band_energy(f, spec, f_m) e_side_low band_energy(f, spec, f_m - f_sun_rel) e_side_high band_energy(f, spec, f_m f_sun_rel) # 防止分母超小 return (e_side_low e_side_high) / (e_carrier 1e-12)3.4 故障判别与后处理判别逻辑我不建议一上来就上神经网络。先从工程角度定一组可解释的阈值规则把那些特征值离群明显的样本筛出来再决定要不要用机器学习。下面这段代码实现了一个简单的“投票式”判别器四个特征指标里每个都能独自给出“健康”或“故障”的初步判断然后统计票数超过两票判为故障。def fault_decision(x, fs): 基于阈值投票的故障判别返回决策标签和特征明细 freqs, env_spec extract_envelope_spectrum(x, fs) rms, kurt, peak_factor extract_statistics(x) sb_factor compute_sideband_factor(x, fs) # 在包络谱中定位太阳轮故障特征频率附近峰值 peak_zone (freqs f_sun_def - 2) (freqs f_sun_def 2) zone_peak np.max(env_spec[peak_zone]) if np.any(peak_zone) else 0.0 base_level np.median(env_spec) 3 * np.std(env_spec) env_ratio zone_peak / (base_level 1e-12) votes 0 votes 1 if kurt 4.0 else 0 # 冲击特征明显 votes 1 if sb_factor 0.30 else 0 # 边带能量显著抬升 votes 1 if env_ratio 3.0 else 0 # 故障频率峰值高于背景 3 倍 votes 1 if peak_factor 8.0 else 0 # 峰值因子异常 label 故障 if votes 2 else 健康 features { RMS: rms, 峭度: kurt, 峰值因子: peak_factor, 边带因子: sb_factor, 包络谱峰值比: env_ratio, 票数: votes } return label, features判别阈值不是凭空拍的。峭度 4.0 对健康齿轮箱常见的准高斯振动基本到不了一旦出现来自断齿或裂纹的周期冲击峭度会快速跳升到 6 以上边带因子 0.30 是我对照多组健康模拟数据和轻度磨损模拟数据后的分界点包络谱峰值比 3.0 作为“故障频率显著高于噪声背景”的经验界限在不同采样率下都比较稳定。这些阈值在真实数据上可能需要用健康样本重新标定但作为初筛逻辑已经足够。完整跑通后的结果可视化也很重要。把健康信号和故障信号的时频谱、包络谱、特征数值画在同一张画布里能很直观地看到故障信号在 540 Hz 附近的时频能量带明显变粗、亮度周期性闪烁包络谱在 67.5 Hz 处出现尖峰。这一组图就是故障诊断报告的“实锤”。import matplotlib.pyplot as plt def plot_diagnosis(health, fault, fs): fig, axes plt.subplots(2, 2, figsize(12, 7)) # 健康信号STFT f, t_spec, spec_h, _, _ extract_stft_features(health, fs) axes[0,0].pcolormesh(t_spec, f, spec_h, shadingauto, cmapjet) axes[0,0].set_title(健康信号 STFT) axes[0,0].set_ylabel(频率 (Hz)) # 故障信号STFT _, _, spec_f, _, _ extract_stft_features(fault, fs) axes[0,1].pcolormesh(t_spec, f, spec_f, shadingauto, cmapjet) axes[0,1].set_title(太阳轮故障 STFT) # 包络谱 freq_h, env_h extract_envelope_spectrum(health, fs) freq_f, env_f extract_envelope_spectrum(fault, fs) axes[1,0].plot(freq_h, env_h, alpha0.7) axes[1,0].axvline(f_sun_def, colorred, ls--) axes[1,0].set_title(健康信号包络谱) axes[1,1].plot(freq_f, env_f, alpha0.7) axes[1,1].axvline(f_sun_def, colorred, ls--) axes[1,1].set_title(太阳轮故障包络谱) plt.tight_layout() plt.savefig(output/diagnosis_result.png, dpi150)到这里一套从信号到决策的闭环已经完整了。运行 run_demo.py你会在 output 目录下看到诊断图像和控制台打印的特征表健康信号被正确判为“健康”太阳轮故障信号被正确判为“故障”。用这个框架替换掉仿真信号生成部分接入现场采集的加速度数据文件就是一套能直接上线的故障初筛工具。4. 实操中遇到的那些坑与排查速查表4.1 参数选择窗长、小波尺度、阈值怎么拍板先聊 STFT 窗长。窗长反映的是频率分辨率和时间分辨率的“矛盾”窗越长频率越细但时间越模糊瞬时冲击事件会被抹平窗越短时间定位越准但频率间隔小于一个频率分辨率半宽的两根谱线会分不开。工程上我一般按“最低特征频率至少要占 2 个频率分辨率格”来估算。这里特征频率是 7.5 Hz所以至少需要 2/7.5≈0.267 秒的窗也就是 2187 点但那样就太长了。实操折衷是先用 1024 点窗看全局如果 7.5 Hz 附近看不清楚再单独对低频段做一次 4096 点窗的局部 STFT。小波分析里面连续小波变换的“尺度”对应频率。用 PyWavelets 做连续小波时很多人直接套用默认尺度参数结果高频段一片混沌、低频段又光秃秃的。我会把尺度范围换算成实际频率范围再设置希望分析的频率范围是 100 到 3000 Hz则让尺度覆盖 fs/3000 到 fs/100 的范围同时要保证采样点数足以容纳最长的小波尺度否则低频处全是边缘效应。阈值设置也不能一劳永逸。不同齿轮箱的负载水平、安装刚度不同健康状态下的峭度和边带因子基线可能差两三倍。建议先在设备正常运行阶段采集一批健康样本把特征值的均值和标准差算出来再用“均值 3 倍标准差”作为动态阈值比直接套我代码里的经验阈值靠谱得多。4.2 我踩过的几个坑第一个坑是假冲击。刚开始做行星齿轮箱诊断的时候我用包络谱看到某个特征频率处有一个很大的峰果断报了断齿结果拆机发现齿面完好只是润滑油里有金属碎屑在齿面上滚动。这类假冲击的包络谱特征和真实故障非常像唯一的区别是它会随机漂移不会严格钉在故障频率上。现在我的处理是连续取三段不同时间的信号做包络谱特征峰位置和幅值在三段里保持一致的才列为可信判据。第二个坑是共振频率对幅值的干扰。现场传感器安装位置和结构共振发生了变化同一故障程度在某台设备上包络谱峰值比达到 5换一台安装刚度稍差的设备变成 2.5。应对方法是不要只看绝对峰值用峰值与邻近频带中位数的比值相当于做了归一化抗共振干扰能力明显强得多。第三个坑是计算长数据段时的内存爆炸。有人把一整天的数据截取 10 万点出来做 STFT发现内存占用暴涨。实际上 STFT 计算时矩阵是复数存储点数和时间帧数乘积非常大。直观的办法是分段处理每段 8192 点或者 16384 点最后汇总特征趋势图。特征趋势图比单段诊断图像更有临床意义可以看到故障特征从无到有的渐变过程。4.3 常见问题排查速查表下面这个速查表我从实际项目里整理出来的高频问题对应的解决思路也一并列出问题现象可能原因处理建议包络谱在特征频率处没有峰但时频谱有异常能量故障频率计算使用了错误的转频或齿数重新核对输入转速换算确认是输入轴转频还是输出轴转频时频谱上能量带连续变粗但看不出周期性窗太长导致时间分辨率不足减小 noverlap 或 nperseg提高时间分辨率峭度极高但边带因子不高冲击来自瞬时脉冲干扰而非齿轮故障对比多段数据检查冲击间隔是否等于特征频率倒数特征频率峰值出现但附近很宽转速不稳定导致频率拖尾采用阶次跟踪或先对转速信号作同步重采样故障信号和健康信号特征值重叠严重阈值设置未按本机健康基线标定采集健康样本重新计算均值与标准差动态设阈值STFT低频段全是大亮点边缘效应和窗函数泄漏适当增加窗长避开低频区域或用 CWT 替代如果你正准备把这套流程用在自己的设备上我最后再补一句经验不要迷信“越复杂的算法越准”。行星齿轮箱诊断里STFT 加包络谱这套基本功覆盖了八成以上的故障场景剩下的复杂非平稳工况再用小波和 HHT 去打补丁。先把特征频率算得明明白白把健康基线建起来比什么高深模型都管用。我自己也是这么走过来的一开始总想用更花哨的深度学习方法后来发现把时频特征和物理机理对齐了简单的阈值规则就已经很能打。希望这篇文章能帮你少走几步弯路也欢迎你在实际数据上踩出异常后回来一起交流。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑