当前位置: 首页 > article >正文

信号处理-消除趋势项

在这里插入图片描述

matlab 版本

在这里插入图片描述

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()

http://www.kler.cn/a/470985.html

相关文章:

  • rabbitmq——岁月云实战笔记
  • HackMyVM-Again靶机的测试报告
  • LabVIEW四旋翼飞行器姿态监测系统
  • pymodubs TCP 无链接报错: pymodbus.exceptions.ConnectionException: Modbus Error
  • 统计字符【2】(PTA)C语言
  • TDengine + MQTT :车联网时序数据库如何高效接入
  • VulnHub-Acid(1/100)
  • 前端面试题-(webpack基础)
  • 计算机网络常见面试题及解答
  • 在Linux中,zabbix如何监控脑裂?
  • 接口开发完后,个人对于接下来接口优化的一些思考
  • iOS - 自旋锁
  • Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
  • Read View在MVCC是如何工作的?
  • 解密序列建模:理解 RNN、LSTM 和 Seq2Seq
  • 深度学习GPU服务器推荐:打造高效运算平台
  • js 之图片流式转换及图片处理+createObjectURL+canvas+webgl+buffer
  • LED背光驱动芯片RT9293应用电路
  • 用Python进行RU计算
  • Qt pdf分割成png格式
  • 5.zookeeper可视化工具ZooInspector
  • QT自定义工具条渐变背景颜色一例
  • 基于YOLOV5的车辆跟踪与目标检测
  • 【C++数据结构——内排序】希尔排序(头歌实践教学平台习题)【合集】
  • 【FlutterDart】 listView例子一(13 /100)
  • 高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图