目录

1. 需要的 Python 库

2. 一些主要的信号

(1)原始信号

(2)噪声信号

(3)对原始信号加噪

(4)进行 M 点平均

3. 对系统的探究

(1)单位冲击响应

(2)频响


对于该滑动平均的具体介绍以及 Matlab 实现方法可以参考下面的这篇文章

M 点滑动平均 Matlab 实现

1. 需要的 Python 库

Python 的好处就在于大量的库文件,使用它们可以很好的进行工程处理,甚至与 Matlab 相比拟,在这次实现中,我们主要需要的是画图、傅里叶变换等操作

import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack

2. 一些主要的信号

(1)原始信号

随便生成一个如下的正弦信号:

Fs = 1
size = 100
n = np.arange(0, size) / Fs
a = np.sin(0.1 * np.pi * n)
plt.title("Original Signal")
plt.xlabel("n")
plt.ylabel("a")
plt.stem(n, a)
# plt.savefig("E:\Python\Mpoint\ Original Signal")     #生成的图片进行保存
plt.show()                                             #展示图片

得到的图片如下:

(2)噪声信号

b = 0.1 * np.random.randn(size)           #生成 size 长度的噪声信号
plt.title("Noise")
plt.xlabel("n")
plt.ylabel("b")
plt.stem(n, b)
# plt.savefig("E:\Python\Mpoint\ Noise Signal")
plt.show()

得到的噪声信号如下:

(3)对原始信号加噪

简单的信号加法操作

c = a + b
plt.title("Signal added noise")
plt.xlabel("n")
plt.ylabel("c")
plt.stem(n, c)
# plt.savefig("E:\Python\Mpoint\ Signal added noise")
plt.show()

得到如下信号:

(4)进行 M 点平均

s = np.zeros(100)
k = np.arange(0, size)
for i in k:for j in np.arange(0, 4):           # M 为 5 的滑动平均s[k] = s[k] + c[k - j]s[k] = 1 / 5 * s[k]
plt.title("Signal after filtering")
plt.xlabel("n")
plt.ylabel("d")
plt.stem(k, s)
# plt.savefig("E:\Python\Mpoint\ Signal after filtering")
plt.show()

得到滑动平均后的信号如下:

3. 对系统的探究

(1)单位冲击响应

u = np.zeros(100)
l = {0, 1, 2, 3, 4}       #其实就是 u[n] - u[n - 5],再取 1/M
for x in l:u[x] = 1
plt.title("Unit impulse response")
plt.xlabel("n")
plt.ylabel("u")
plt.stem(k, u)
# plt.savefig("E:\Python\Mpoint\ Unit impulse response")
plt.show()

(2)频响

h = scipy.fftpack.fft(u)          # 频响就是对单位冲击响应的傅里叶变化
plt.title("Frequency response")
plt.xlabel("n")
plt.ylabel("h")
plt.plot(abs(h))
# plt.savefig("E:\Python\Mpoint\ Frequency response")
plt.show()

M 点滑动平均 Python 实现相关推荐

  1. python 曲线平滑处理——方法总结(Savitzky-Golay 滤波器、make_interp_spline插值法和convolve滑动平均滤波)

    文章目录 1 插值法对曲线平滑处理 1.1 插值法的常见实现方法 1.2 拟合和插值的区别 1.3 代码实例 2 Savitzky-Golay 滤波器实现曲线平滑 2.1 问题描述 2.2 Savit ...

  2. python 滤波_[开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)

    [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) ​ 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...

  3. python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解

    文章目录 1 基于Numpy.convolve实现滑动平均滤波 1.1 滑动平均概念 1.2 滑动平均的数学原理 1.3 语法 1.4 滑动平均滤波示例 2 曲线平滑处理--Savitzky-Gola ...

  4. python的pandas计算5天滑动平均气温,并批量计算春季起始日

    近期有个计算春天的需求,网上搜了下大多是用MATLAB中的smooth函数的思路写的.正好学到pandas几个强大的数据处理方法,想着自己试试. pandas提供了大量能使我们快速便捷地处理数据的函数 ...

  5. python量化回测结果分析53课_#滑动平均策略——python回测结果 (中山大学岭南学院量化投资协会)...

    策略如下: 回测区间为2016年10月10日至2017年10月13日,选择沪深300进行回测. 记录所有当天5日滑动平均价格高于20日滑动平均价格的股票 将总资金额的一半n/2用于买入股票,每一支股票 ...

  6. python滑动平均

    在时间序列数据的处理方法中, 滑动平均通过建立整个数据集中的一系列子集的平均值来分析数据点,让越近的数据权重越大,越远的数据权重越小,从而平滑小波动显示出长期趋势. 比如可以通过以下代码实现: for ...

  7. python如何做滑动平均

    def moving_average(interval, windowsize):window = np.ones(int(windowsize)) / float(windowsize)re = n ...

  8. proteus仿真micropython_基于micropython的滑动平均滤波器

    滑动平均滤波也叫递推平均滤波. 把连续取得的N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),把队列中的N个数据进行算术平均运算,获得 ...

  9. 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

    本文是<TensorFlow从浅入深>系列之第5篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

最新文章

  1. 2021年大数据ZooKeeper(一):ZooKeeper基本知识
  2. Postman for Linux(x86)
  3. jquery 插件和后台模板搜集
  4. html5相关笔记(一)
  5. ​Transformer升级之路:从Performer到线性Attention
  6. 【工业控制】激光跟踪仪概述
  7. leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)
  8. nohup 命令 用途:不挂断地运行命令
  9. C语言之strstr函数
  10. linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件
  11. 罗永浩回归!将开秋季旧机发布会:与iPhone 12同一天
  12. java_js_json_日期格式化
  13. 计算机组成原理:原码、补码一位乘,Booth算法
  14. Rust: 如何运行你在Atom中写的Rust代码?
  15. 永久关闭 Windows 安全中心实时防护
  16. 判断质数、分解质因数
  17. Mendix开发不卡壳之 Scheduler Event定时任务使用
  18. 使用范例调教ChatGPT
  19. 简单辨析关系和区别:YUV、H.264、RTP、UDP、RTSP
  20. Android Google原生系统刷机

热门文章

  1. ATO,MTO和ETO
  2. 采购申请的评估价格的来源
  3. GET_GLOBALS_FROM_SLVC_FULLSCR
  4. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
  5. mysql重启电脑提示145_MYSQL错误:Can’t open file: ‘#215;#215;#215;.MYI’ (errno: 145)修复方法...
  6. python tcp服务器_Python 创建TCP服务器的方法
  7. java的http请求头信息_HTTP请求头所包含的信息
  8. 自制贴纸图案大全图片_重磅!Supreme x 山本耀司联名Bogo贴纸泄露,发售确认?!...
  9. java怎么把随机数放入数组_Java学习:集合的使用与数组的区别
  10. python常用的十进制、16进制之间的转换