信号处理-消除趋势项

matlab 版本

python 版本

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams

# 设置中文字体
rcParams['font.sans-serif'] = ['SimHei']  # 设置默认字体为黑体
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

def compute_time(n, fs):
    """生成时间序列"""
    return np.arange(n) / fs

def trend_remove(s, fs, m=2):
    """去除信号中的趋势项"""
    x = compute_time(len(s), fs)
    param = np.polyfit(x, s, m)  # 用m次多项式拟合
    s_poly_func = np.poly1d(param)  # 生成多项式函数
    s_poly = s_poly_func(x)  # 计算多项式值
    return s - s_poly  # 去除趋势项

# 创建一个带二次趋势的信号
fs = 100  # 采样频率
t = compute_time(1000, fs)  # 时间序列
quadratic_trend = 0.01 * t**2 + 0.5 * t  # 二次趋势
signal = np.sin(2 * np.pi * 5 * t) + quadratic_trend  # 信号 = 正弦波 + 二次趋势

# 去除趋势项
signal_detrended = trend_remove(signal, fs, m=2)  # 使用二次多项式去除趋势

# 可视化结果
plt.figure(figsize=(10, 6))
plt.plot(t, signal, label="原始信号 (带趋势)")
plt.plot(t, signal_detrended, label="去除趋势后的信号", linestyle="--")
plt.legend()
plt.xlabel("时间 (s)")
plt.ylabel("幅值")
plt.title("信号去趋势验证 (m=2)")
plt.grid()
plt.show()
相关推荐
奔袭的算法工程师3 天前
论文解读--Sparse4D v3: Advancing End-to-End 3D Detection and Tracking
人工智能·目标检测·计算机视觉·自动驾驶·信号处理
江畔柳前堤4 天前
github实战指南01-账号配置与 SSH 密钥
运维·人工智能·深度学习·ssh·github·pyqt·信号处理
江畔柳前堤4 天前
github实战指南02-仓库管理与 Issue
人工智能·深度学习·github·信号处理·caffe·wps·issue
小白小宋5 天前
【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现
算法·5g·matlab·信息与通信·信号处理
DreamLife☼5 天前
OpenBCI-实时BCI系统:低延迟与闭环控制
人工智能·信息可视化·信号处理·开源硬件·脑机接口·低延迟·openbci
network_tester6 天前
TSN交换机研发测试怎么做?一套可落地的“信而泰仪器 + 康芯源服务”方案解读
网络·网络协议·tcp/ip·车载系统·汽车·信息与通信·信号处理
Code-keys7 天前
ARM NEON SIMD 编程实战:从音频信号处理到AI算子研发实战
arm开发·音视频·信号处理
MARIN_shen7 天前
Marin说PCB之高速信号SERDES (GMSL2)信号换层孔打在焊盘中心真的好吗?---01
硬件工程·信号处理·pcb工艺
Inhand陈工9 天前
映翰通IG502实战:通过RS232采集交通信号灯数据,实现自动短信告警
网络·嵌入式硬件·物联网·网络安全·边缘计算·信息与通信·信号处理
network_tester10 天前
SENT/PSI5传感器TSN集成测试:打通传统传感与未来车载网络的“最后一公里”
数据库·网络协议·tcp/ip·自动驾驶·信息与通信·信号处理·tcpdump