信号处理-消除趋势项

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()
相关推荐
network_tester2 天前
TSN网络流量及协议测试:为确定性网络护航的关键技术
网络·网络协议·车载系统·汽车·信息与通信·信号处理
小许同学记录成长2 天前
多速率信号处理源码深度剖析
算法·信号处理
小许同学记录成长3 天前
gr-filter 滤波与多速率模块完整源码分析
算法·信号处理
小许同学记录成长3 天前
gr-analog 模拟信号模块完整源码分析
python·算法·信号处理
松☆3 天前
昇腾NPU的信号处理加速库,跟NumPy的FFT有啥区别?
numpy·信号处理
松☆3 天前
Triton推理服务接昇腾NPU,GE后端怎么搭?
华为·性能优化·numpy·信号处理·harmonyos
2601_957787585 天前
短视频矩阵系统的信号密码:用数字信号处理(DSP)理论,破解“限流“的底层逻辑
矩阵·音视频·信号处理
2601_957786776 天前
短视频矩阵系统的信号处理密码:用奈奎斯特采样定理破解“限流“黑箱
矩阵·音视频·信号处理
jz_ddk6 天前
[信号处理] 从匹配滤波到精确测距
信号处理·测距·rrc·码间串扰·扩频调制·isi
jiang_bluetooth8 天前
蓝牙典型射频架构剖析
蓝牙·信号处理·射频·pa·lna