news 2026/6/15 17:46:09

CEEMD降噪 CEEMD降噪程序,程序运行结果包含原信号图,原信号频谱图,分解信号图,分解信...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CEEMD降噪 CEEMD降噪程序,程序运行结果包含原信号图,原信号频谱图,分解信号图,分解信...

CEEMD降噪 CEEMD降噪程序,程序运行结果包含原信号图,原信号频谱图,分解信号图,分解信号频谱图,降噪后信号图,均方根误差,信噪比。

最近在信号处理中遇到了一个头疼的问题——如何从强噪声背景里提取有效信号。试了一圈方法发现CEEMD(互补集合经验模态分解)降噪效果挺有意思,今天带大家用Python撸个完整的降噪流程。

先上效果图镇楼:左边是原始含噪信号,右边是降噪后的信号。肉眼可见毛刺少了一大半,信噪比从15dB提升到22dB,均方根误差降了60%。这可不是美图秀秀的滤镜,是实打实的算法力量。

搞个模拟信号当小白鼠:

import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 1, 1000) signal = 2 * np.sin(2 * np.pi * 15 * t) + 0.5 * np.cos(2 * np.pi * 40 * t) noise = 0.8 * np.random.randn(len(t)) noisy_signal = signal + noise

这里故意混了高频(40Hz)和低频(15Hz)成分,加上随机噪声模拟真实场景。注意噪声幅度调得比较狠,这样才能看出算法实力。

上硬菜CEEMD分解:

from PyEMD import CEEMD ceemd = CEEMD() imfs = ceemd(noisy_signal)

PyEMD库的CEEMD类真香,三行代码完成分解。imfs变量里存着从高频到低频的各阶本征模态函数(IMF)。别被术语吓到,其实就是把信号像剥洋葱一样一层层拆开。

重点来了——筛选有效分量:

valid_imfs = [] for imf in imfs: corr = np.corrcoef(signal, imf)[0,1] if abs(corr) > 0.1: # 相关系数阈值 valid_imfs.append(imf) denoised = sum(valid_imfs)

这里用了个小技巧:计算每个IMF与原始干净信号的相关系数。实际应用时如果不知道干净信号,可以用能量占比法或者频谱分析代替。保留相关性高的分量,相当于把"不像噪声"的部分留下。

频谱分析才是照妖镜:

def plot_spectrum(y, fs=1000): n = len(y) Y = np.fft.fft(y)[:n//2] freqs = np.fft.fftfreq(n, 1/fs)[:n//2] plt.plot(freqs, np.abs(Y)/n) plt.figure() plot_spectrum(noisy_signal) plot_spectrum(denoised)

对比频谱图一目了然:40Hz附近的噪声尖峰被削平,15Hz的主成分完好无损。这说明算法不是无脑砍高频,而是精准打击异常频率。

最后上硬指标:

def RMSE(clean, denoised): return np.sqrt(np.mean((clean - denoised)**2)) def SNR(clean, noise): return 10*np.log10(np.var(clean)/np.var(noise)) print(f"RMSE: {RMSE(signal, denoised):.4f}") print(f"SNR提升: {SNR(signal, denoised-signal) - SNR(signal, noise):.1f} dB")

这两个指标就像考试的分数,RMSE看误差绝对值,SNR看信号纯净度。注意计算SNR提升时要用降噪前后的噪声分量对比,这样更准确。

踩过的坑提醒:CEEMD对参数敏感,噪声幅度、集成次数这些要反复调试。有个邪门现象——有时候多保留一个IMF反而效果更好,可能是算法把部分有用信息误判成高频了。建议用滑动窗口分段处理,尤其对非平稳信号效果拔群。

完整代码已打包扔GitHub上了,记得换自己的信号做实验。下期可能写写CEEMD和深度学习的组合拳,最近发现用LSTM预测IMF分量挺有意思...

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:00:23

料箱输送线程序:合流分拣控制与WCS、PLC的Socket接口详解

料箱输送线程序,有合流和分拣,个人认为精华部分是WCS和PLC的Socket接口和分拣控制程序。 提供设备布局图和电气图纸以及博途V16程序。 程序源自欧企,无加密,外企程序还是比较美观的,程序仅供学习参考,不讲解…

作者头像 李华
网站建设 2026/6/15 13:01:32

[内网流媒体] 浏览器访问模式的安全优势

背景 在内网实时画面场景,浏览器访问模式(无需客户端安装)有显著的安全与运维优势。相比自定义客户端或二进制分发,浏览器模式降低了攻击面、简化了权限管理,并提升了可审计性。 主要安全优势 零安装,减少恶意代码风险 无需分发可执行文件,避免被恶意软件篡改或附带木…

作者头像 李华
网站建设 2026/6/15 13:00:19

基于MATLAB的频率响应分析:完整指南

频率响应分析实战:用MATLAB揭开系统动态行为的“听诊器”你有没有遇到过这样的问题?一个看似设计合理的控制系统,在实际运行中却频频振荡;一台精密仪器,总在某个特定转速下发出异常振动;一段音频滤波器代码…

作者头像 李华
网站建设 2026/6/15 14:10:51

Elasticsearch资源隔离配置教程

Elasticsearch资源隔离实战:从JVM到索引的全链路稳定性保障 你有没有遇到过这样的场景? 凌晨三点,线上告警突然炸了——搜索接口大面积超时,监控平台图表一片红色。排查发现,并不是核心业务出了问题,而是某…

作者头像 李华
网站建设 2026/6/15 13:00:22

Anthropic寻求3500亿美元估值融资100亿美元

据报道,距离上一轮融资不到两个月,Anthropic PBC正在与投资者洽谈再融资100亿美元。据《华尔街日报》今日消息,Coatue Management和GIC将牵头此轮融资。报道称,这将使Anthropic的融资前估值达到3500亿美元,几乎是9月份…

作者头像 李华
网站建设 2026/6/15 13:00:11

入驻爱发电

我的爱发电地址:https://afdian.com/a/xiangyu

作者头像 李华