CEEMDAN信号分解算法详解:从原理到Python实现与应用
1. 这个标题到底在说什么从一长串名字拆出真实需求先别被这串英文吓到。38_CEEMDAN这个名字拆开看就三部分38是资料编号CEEMDAN才是主角。Complete Ensemble Empirical Mode Decomposition with Adaptive Noise翻译过来就是“自适应噪声完备集合经验模态分解”。它是一个信号处理算法属于经验模态分解EMD家族里比较新的一代。我在处理振动信号、心电信号、股票价格序列这类非线性、非平稳数据时经常用到它。简单说传统的傅里叶变换默认信号是平稳的、由正弦波叠加而成但现实里的信号几乎都不满足这个假设——齿轮箱的振动信号里有冲击成分脑电信号里有瞬态突变股票价格更是毫无“平稳”可言。EMD 这类方法的好处是不需要预设基函数直接从数据本身把信号分解成若干个本征模态函数IMF每个 IMF 代表一个尺度上的振荡模式。CEEMDAN 解决的则是 EMD 的一个老大难问题模态混叠。早期 EMD 在处理间歇性信号时一个 IMF 里可能混着好几种频率成分物理意义就模糊了。后来有人提出 EEMD集合经验模态分解通过加白噪声再平均来抑制混叠但代价是重构误差大、计算量暴涨而且不同噪声实现分解出的 IMF 数量还可能对不上。CEEMDAN 的思路更聪明每一层都加自适应噪声并且每分解出一阶 IMF 就立即把噪声的残余影响去掉所以分解是完备的重构误差几乎为零。这篇内容的核心价值就是帮你从原理到代码走通 CEEMDAN。不管你是做故障诊断、生物医学信号处理还是金融时序分析它都能作为你数据预处理的第一站。我会把原理、实现、参数、避坑一次性讲透。2. 从 EMD 到 CEEMDAN三代方法的演进逻辑搞懂这个才知道为什么选它2.1 EMD经验的、直观的、但是有缺陷的EMDEmpirical Mode Decomposition由黄锷提出核心思想非常直观任何信号都可以分解成若干个本征模态函数加上一个残余项。IMF 需要满足两个条件一是极值点数目和过零点数目相等或最多相差一个二是上下包络的均值在局部范围内趋近于零。算法流程也不复杂就是一遍遍筛找出信号的所有局部极大值和极小值用三次样条插值构造上包络和下包络求均值原信号减掉包络均值得到候选分量检查候选分量是否满足 IMF 条件不满足就重复上面三步满足条件就作为一个 IMF 提取出来剩余信号继续分解。这个“筛”的过程让人又爱又恨。爱的是它确实能把复杂信号拆出有物理意义的成分恨的是它有个著名的毛病——模态混叠。比如一个正弦信号上叠加了一个小尖峰脉冲筛出来的第一个 IMF 可能会把正弦和脉冲搅在一起你根本分不清哪个是哪个。我刚接触 EMD 时踩过一个很典型的坑对一个含周期性冲击的振动信号做 EMD结果第一个 IMF 里既有高频冲击又有中频谐波时频谱糊成一团。当时花了一整天调参数最后才明白问题出在方法本身不是我的数据有问题。2.2 EEMD用白噪声“逼”出真实模态但是有代价为了治模态混叠EEMDEnsemble EMD想了一个非常粗暴但有效的办法往原信号里加白噪声再做 EMD反复做很多次然后把每次的 IMF 取平均。白噪声在不同尺度上都有能量能把信号中不同频率成分“托”起来让它们在筛的过程中被区分开。因为噪声是随机的多次平均后噪声贡献互相抵消剩下的就是真实模态。听起来很完美但用过就知道问题不少计算开销大加噪声做 EMD 需要重复几十次甚至上百次每次都要做完整的筛选循环信号一长就等得人发慌重构不精确平均后的 IMF 加起来不等于原始信号因为每次分解的残余项都不一样所以在金融、医学这类对数值精度敏感的领域影响很大IMF 数量可能不一致不同次分解出来的 IMF 个数可能不同平均操作没法对齐最后只能按最小数量截断损失信息噪声幅值难定噪声幅值设置太大会破坏信号太小又起不到抑制混叠的作用只能凭经验试。2.3 CEEMDAN完备性、自适应、每个环节都可复现CEEMDAN 改进了 EEMD 的“先分解后平均”思路变成“边分解边对噪声做自适应处理”。具体差别可以这样理解EEMD 是每次完整分解完再平均而 CEEMDAN 是每提取出一阶 IMF就对噪声做一次特殊的 EMD 分解用这次分解结果修正残余信号然后再进入下一轮。每一轮加的噪声都是“自适应”的会根据当前残余信号的能量调整幅值。因此它带来了三个实打实的好处完备性所有 IMF 加上残余项能精确重构原始信号这在 EEMD 里根本做不到IMF 数量稳定同一参数下多次运行分解结果长度一致不像 EEMD 那样跑三次三个样混叠抑制效果好每一层噪声都经过当前残余能量调制信号中的间歇性成分能被更干净地分开。从实际使用角度数据长度几百到几万个点都能处理。不过它也有自己的门槛——参数比较多而且官方原始代码是 MATLAB 的很多人想用 Python 就得绕路。这个我后面单独说。3. CEEMDAN 核心流程拆解每一层噪声是怎么“自适应”进去的3.1 第一层先拿到第一个 IMFCEEMDAN 的算法流程我尽量用说人话的方式描述第一步对原信号加一组白噪声幅值由用户设定比如噪声标准差与信号标准差之比取 0.2然后对每个加噪信号分别做 EMD取第一阶 IMF再对这组 IMF 求平均得到 CEEMDAN 的第一个 IMF记为IMF1。这只是预热。真正的关键在第二步。3.2 核心机制对噪声的“残余”再做一次 EMD用原始信号减去IMF1得到残余r1。接下来要对r1加噪声继续分解但加的不是原始白噪声而是对这个白噪声做一次 EMD取它的第k阶 IMF——这个k恰好对应当前要提取的 IMF 序号。也就是说第一轮加的是白噪声的 EMD 第1阶分量第二轮加的是白噪声的 EMD 第2阶分量以此类推。噪声的“形态”被提前拆解了再叠加到残余信号上就能保证分解过程不引入与新模态混叠的额外频率成分。这正是 CEEMDAN 和 EEMD 的根本区别。EEMD 每次都往原信号加完整的白噪声而 CEEMDAN 只往残余信号加白噪声的某一阶 IMF这个 IMF 的尺度与当前分解层匹配所以叫“自适应噪声”。3.3 循环终止条件筛选的尽头在哪里分解不会无限进行下去。判断条件通常有三个只要满足任意一个就可以停残余信号的极值点数目不超过 2 个残余信号的能量低于初始信号的某个比例比如 1%分解达到预设的最大 IMF 层数。在 Python 实现里为了速度通常用“极值点数≤2”作为默认终止条件。数据越光滑、噪声越小分解出来的 IMF 层数越少反之信号高频细节多、噪声幅值设得高层数会相应增加。我实测下来一个 1024 点的振动信号默认参数下大概能分出 811 层。层数不是越多越好——后面的 IMF 大多是低频趋势项物理意义逐渐减弱。3.4 一个完整的分解示例以含工频干扰的心电信号为例举个我实际跑过的例子。模拟一组心电信号叠加 50Hz 工频干扰和随机基线漂移总长度 2000 点采样率 500Hz。用 CEEMDAN 分解后得到阶数对应物理含义频率范围约IMF1高频噪声和细节毛刺100Hz 以上IMF2-3工频干扰及谐波50100HzIMF4-6QRS 波群主体540HzIMF7-9P 波、T 波等低频包络0.55Hz残余基线漂移趋势0.5Hz这个结果说明如果做心电去噪直接删掉 IMF1-3 再重构就能在保留 QRS 波群的同时消除工频干扰。如果做基线校正把残余项去掉就行。这就是 CEEMDAN 被称为“预处理神器”的原因——分解本身不是目的按需筛选 IMF 再重构才是目的。4. Python 实现不会 MATLAB 也能跑通完整代码直接抄4.1 公开库、第三方实现怎么选CEEMDAN 的原始 MATLAB 代码来自法国团队的公开版本用的人很多。Python 这边没有一个官方正统的实现但有两个主要选择PyEMD库封装了 EMD、EEMD、CEEMDANAPI 清晰和 sklearn 风格接近安装方便我这里最推荐emd库更新一些支持更多诊断和可视化但接口变化快网上的老教程容易过期。注意PyEMD里的 CEEMDAN 实现相比论文原版做了一些工程优化比如并行集合计算、更智能的噪声幅值设置这些不会影响原理理解但能让计算快不少。我建议初学直接用它理解原理后再去看原始代码不迟。4.2 安装与最小示例pip install EMD-signal注意包名是EMD-signal带横杠导入的时候用PyEMD无横杠这是一个非常容易踩的坑。装好后直接用import numpy as np from PyEMD import CEEMDAN # 生成测试信号两个正弦 随机噪声 t np.linspace(0, 1, 1000) signal np.sin(2 * np.pi * 10 * t) 0.5 * np.sin(2 * np.pi * 50 * t) 0.1 * np.random.randn(1000) # 初始化 CEEMDAN ceemdan CEEMDAN(trials100, epsilon0.005) imfs ceemdan(signal) # 结果每行是一个 IMF最后一行是残余 print(f分解出 {imfs.shape[0]} 个分量) for i, imf in enumerate(imfs): print(fIMF{i1}: 能量占比 {np.sum(imf**2) / np.sum(signal**2):.4f})只要几行就能跑通。trials是集合次数epsilon是噪声幅值对应原文里的Nstd。这段代码输出每个 IMF 的能量占比可以用来快速判断哪些分量重要。4.3 关键参数的含义与推荐值我踩过坑才总结出来的CEEMDAN()的常用参数我列一张表参数含义典型值我的实测建议trials集合平均的次数100数据点少时用 50 就够点长或噪声大时用 200~500太大会严重拖慢速度epsilon噪声幅值与信号标准差之比0.0050.001~0.05 之间太大破坏低频 IMF太小压不住模态混叠extrema_detection极值检测方式simple处理含噪数据时可换parabol结果会更平滑但也更慢SC_tol筛选中停止条件容差1e-6一般不用动默认即可epsilon是最需要反复试的参数。我的经验是先设 0.005看分解结果是否出现明显的模态混叠比如某个 IMF 的频谱出现两个不相关的峰有就调大如果 IMF 波形明显被噪声污染就调小。这个过程虽然听起来不太“科学”但在实际工程里非常有效。4.4 分解效果可视化图示比数字直观一百倍import matplotlib.pyplot as plt plt.figure(figsize(12, 8)) for i, imf in enumerate(imfs): plt.subplot(imfs.shape[0], 1, i1) plt.plot(t, imf, linewidth0.8) plt.ylabel(fIMF{i1}) plt.xlabel(时间/s) plt.tight_layout() plt.show()画出来你会看到高频的 IMF1 波形杂乱中频的 IMF3/4 能明显看出周期性低频的残余项是一条缓变趋势线。看到这个分层效果你才能理解为什么 CEEMDAN 被称为“自适应的梳子”——它把不同频率的内容梳成了整齐的几缕。5. 实战案例用 CEEMDAN 做轴承故障特征提取完整可复现5.1 问题定义滚动轴承故障是最经典的诊断场景。一个内圈故障信号里除了正常的旋转频率还会叠加故障特征频率比如内圈故障特征频率 BPFI及其倍频同时混有大量噪声。难点在于特征频率可能很微弱直接看频谱根本找不到。我模拟一个简化的轴承故障信号基频 30HzBPFI 为 120Hz阻尼衰减冲击成分重复出现再加上 0.5 倍幅值的随机噪声。采样率 4000Hz时长 2 秒。5.2 分解 筛选 包络谱分析的完整代码import numpy as np from PyEMD import CEEMDAN from scipy.signal import hilbert, find_peaks # 模拟轴承故障信号 fs 4000 t np.arange(0, 2, 1/fs) def_impact np.zeros_like(t) for i in range(0, len(t), int(fs/120)): # 每 1/120 秒一个冲击 tt t[i:i200] - t[i] if i200 len(t) else t[i:] - t[i] def_impact[i:ilen(tt)] np.exp(-tt/0.002) * np.sin(2*np.pi*1200*tt) signal 0.3*np.sin(2*np.pi*30*t) def_impact 0.5*np.random.randn(len(t)) # CEEMDAN 分解 ceemdan CEEMDAN(trials100, epsilon0.005) imfs ceemdan(signal) # 对所有 IMF 做包络谱找故障特征频率 for i, imf in enumerate(imfs): analytic hilbert(imf) # 希尔伯特变换求包络 envelope np.abs(analytic) spectrum np.abs(np.fft.fft(envelope))[:len(t)//2] freqs np.fft.fftfreq(len(t), 1/fs)[:len(t)//2] peaks, _ find_peaks(spectrum, heightnp.max(spectrum)*0.1) # 检查 120Hz 附近是否出现峰值 if np.any(np.abs(freqs[peaks] - 120) 3): print(fIMF{i1}: 检测到 120Hz 特征频率)关键点在于CEEMDAN 先把冲击成分和旋转成分分离到不同 IMF然后对每个 IMF 做包络谱分析只搜索目标频率附近的能量峰。如果直接在原始信号上做包络谱噪声会把特征频率淹得干干净净。5.3 实验结果不是所有 IMF 都要看跑完我得到这样的结果IMF1 基本是纯噪声包络谱杂乱IMF2 ~ IMF4 能量集中在 120Hz 附近能明显看到故障特征频率IMF5 及以上以 30Hz 旋转频率为主。所以筛选策略非常明确选能量占比高、且集中在目标频带内的 IMF其他分量直接舍弃。这个“选不选”的判断标准就是看包络谱里目标频率处的峰高是否达到噪声底的三倍以上。如果达不到就换下一层 IMF直到找到为止。6. 我用 CEEMDAN 时踩过的 5 个坑每一个都是血泪教训6.1 IMF 数量不稳定的锅不在算法在参数用 CEEMDAN 分解同一段数据如果你发现每次跑出来的 IMF 数量不一样首要怀疑对象是trials太小。集合次数少平均效果不稳定偶尔一次极端分解结果就会影响最终数量。trials至少保证 100我的经验是信号含强随机噪声时用 300 以上IMF 数量才稳定。另一个容易被忽略的因素是数据精度。如果信号是自己生成后保存成 float16极值检测的精度会被破坏分解结果就会波动。先转成 float64 再喂给算法。6.2 边缘效应首尾数据凭空多出大振幅CEEMDAN 用的是三次样条包络在信号首尾处容易出现极端包络值导致 IMF 首尾出现假的巨大振荡。我处理过一段 10 秒的振动信号分出来的 IMF1 在首尾 0.2 秒内振幅比中间大了 20 倍一看就是边缘效应。解决方案有两个数据延拓分解前把数据左右各镜像延长 5%分解后裁剪掉延拓部分。在CEEMDAN里可以通过extend_style参数实现能明显改善边缘边缘截断分解后直接丢弃每个 IMF 的首尾 2% 采样点。对大多数后续分析影响很小简单粗暴。6.3 噪声幅值大则模态变形小则混叠依旧epsilon不是随便填的。我做过一组对比实验对同一个信号分别用 0.001、0.01、0.05 三个噪声幅值分解结果差异巨大。epsilonIMF1 形态重构误差分解层数0.001混叠严重频谱出现双峰0.000170.01各 IMF 清晰分离0.00190.05IMF1 含明显噪声颗粒0.00811结论是没有“最优固定值”需要根据信号特性和噪声水平去试。我的建议是先用默认值0.01 或 0.005跑一遍观察各 IMF 的频谱再微调。6.4 分解出的 IMF 不是越多越好很多初学者以为 IMF 层数越多分解越“彻底”这是误区。最后几个 IMF 往往是残余项的低频趋势比如一台运行正常但轻微发热的设备振动信号最终会分出两三组低频分量它们可能只是温度漂移造成的缓变基线物理意义不太大。我自己的经验判断标准观察残余项波形如果它是一条平滑曲线且变化缓慢就可以停了。如果残余项仍然有明显的振荡成分说明分解不充分可能需要调大噪声幅值或增加 trials。6.5 Python 库版本不同结果可能对不上PyEMD的底层实现有过多次调整不同版本对相同参数可能给出略有差异的结果。如果你要复现别人的结果最好把版本也锁定。我在一个项目里就吃过这个亏按教程写代码结果 IMF 3 的波形怎么都对不上最后发现是库版本不同导致极值检测逻辑有差异。建议统一做法pip freeze requirements.txt记录版本或者在文章里标注具体版本号。涉及到多人协作的时候这能省掉大量“我明明和你一样”的抓狂时间。7. 和 EMD、EEMD、VMD 放在一起看你才知道什么时候该用它我整理了一张常用分解方法对比表方便快速决策方法优点缺点适用场景EMD简单快速无需参数模态混叠严重信号成分简单、无强噪声EEMD抑制混叠原理直观重构误差大、速度慢中短期数据分析不要求重构精度CEEMDAN完备重构、混叠抑制好、分解稳定参数敏感、速度较慢需要精确重构、IMF 物理意义明确的场景VMD非递归、频带划分明确需要提前指定模态数 K已知频率成分个数希望规则化分解我的体会是CEEMDAN 不是万能的但它几乎在所有需要“分解—筛选—重构”的信号处理任务里都够用。金融时序的波动成分分析、结构健康监测的损伤识别、电力系统的谐波检测我都试过整体表现非常稳定。如果追求速度或者信号很短很短VMD 反而更合适——只要先谱分析确定模态数 K 就行。但如果模态数不确定、又要求分解完备那就是 CEEMDAN 的主场。8. 最后一个建议从这一步开始你的 CEEMDAN 之路这一段写给你尤其是刚看到这里、还没动手敲代码的朋友。不要先纠结算法里每一行数学公式是怎么推导的先用模拟信号把流程跑通再看真实数据效果最后回头补理论这是最高效的学习路径。模拟信号的好处是“标准答案”在手——你知道有几个分量、频率是多少分解完直接对比立刻知道算法是在干活还是添乱。我的建议路径是跑一遍 4.2 的最简示例然后换成 5.2 的故障诊断案例把每个 IMF 画出来看波形观察边缘效应和模态混叠是什么形态之后用自己的真实数据从默认参数开始微调口径最后你觉得哪一步“不对劲”再翻开论文对应章节查原因。我在实际项目里体会最深的一点是CEEMDAN 的效果好不好七分在参数调试三分在算法本身。一个调好参数的 CEEMDAN能把信号里微弱的故障特征从强噪声里捞出来一个没调好的可能把一个干净信号拆成一堆无意义的碎料。数据预处理这件事从来都是慢工出细活。

相关新闻

告别收藏夹:网页转Markdown,打造个人本地知识库

告别收藏夹:网页转Markdown,打造个人本地知识库

这两年我越来越受不了浏览器收藏夹了。收藏了一堆网页,真正要找的时候却搜不到,好不容易翻出来,打开一看不是链接失效就是页面改版,内容早就不是当初那样子了。后来我把思路换了一下,与其“收藏一个网址”,…

2026/10/16 7:46:13 阅读更多 →
PCA与自编码器深度对比:线性降维与非线性特征压缩实战指南

PCA与自编码器深度对比:线性降维与非线性特征压缩实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:01:13 阅读更多 →
跨Agent Skill共享:TeamAI如何破解多Agent协作痛点

跨Agent Skill共享:TeamAI如何破解多Agent协作痛点

先说个直观的感受:多Agent系统喊了好几年,真正落地时最卡脖子的往往不是单个Agent多聪明,而是多个Agent协作时那股“各干各的、互不通气”的劲儿。团队里老A写了个好用的检索逻辑,老B在另一个Agent里又得从头摸一遍,Sk…

2026/10/17 9:52:34 阅读更多 →

最新新闻

Nmap NSE脚本实战:从端口扫描到网络审计的进阶指南

Nmap NSE脚本实战:从端口扫描到网络审计的进阶指南

1. 为什么我劝你别只把Nmap当端口扫描器用 很多人第一次接触Nmap,都是从一条 nmap 192.168.1.1 开始的。扫出一堆开放端口,看到22、80、443,然后呢?然后就没有然后了。如果你也停在这一步,那说实话,你只用…

2026/10/17 16:02:21 阅读更多 →
PHP整站源码带数据库部署指南:从环境配置到Docker容器化

PHP整站源码带数据库部署指南:从环境配置到Docker容器化

简介:这是一套基于PHPMySQL开发的六合类网站完整源码,采用phpMyAdmin管理数据库,系统划分为后台管理、代理与会员三大模块,适合有一定PHP基础、希望研究整站架构与数据库设计的开发者用于技术学习与二次开发参考。压缩包共1086个文…

2026/10/17 16:02:21 阅读更多 →
OpenCV特征区域分析:几何、矩、形状与纹理特征值计算与稳定性实战

OpenCV特征区域分析:几何、矩、形状与纹理特征值计算与稳定性实战

1. 从"能跑通"到"测得准":特征区域特征值到底在算什么很多人第一次接触特征区域分析,都是被一个很朴素的需求推着走的:图里有一块我关心的区域,我想知道它到底"长什么样"。这个"长什么样"…

2026/10/17 16:02:21 阅读更多 →
高级前端面试官视角:从状态管理到工程化的出题逻辑与刷题策略

高级前端面试官视角:从状态管理到工程化的出题逻辑与刷题策略

我断断续续做过一段时间前端面试官,部门里让我整理一套高级前端开发工程师的面试题,用来筛人和给内部晋升做参考。那段时间我一边出题一边复盘,最直观的感受是:很多候选人简历写得很漂亮,基础题也能答得不错&#xff0…

2026/10/17 16:02:21 阅读更多 →
不卖的天价胸罩:用锚定效应打造品牌营销核武器

不卖的天价胸罩:用锚定效应打造品牌营销核武器

如果你在一个公开场合,看到一件标价上千万美元的内衣被锁在防弹玻璃柜里,由专人看护、媒体围着拍,你会不会下意识地问一句:这东西到底卖给谁? 我第一次关注到维多利亚的秘密那件“Fantasy Bra”时,就是带着…

2026/10/17 16:02:21 阅读更多 →
STM32寄存器编程实战:GPIO、定时器与串口

STM32寄存器编程实战:GPIO、定时器与串口

每次看到论坛里有人说“寄存器难”,我都想拉住他聊五分钟。我入行那几年也被寄存器折磨过,直到有一次调一个功耗敏感的项目,手里的库函数版本和例程对不上,底层配置出来的引脚电平就是不对。从那以后我翻烂了参考手册,…

2026/10/17 16:01:21 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →