python之scipy.signal重采样

news2024/10/7 10:13:17

前言

在复现LiftingNet过程中,了解到作者对于不同转速设备的机械信号进行重采样来矫正转速,也就是固定长度的样本包含了相同旋转周期的设备信息,而非相同时间长度。po一下原文:
在这里插入图片描述
这里其实用到了阶次分析的原理,该样本长度对应的设备转过同样的角度,当然这里是针对不同稳定转速下的,阶比分析针对的是转速连续变化的信号,详情可参考大佬博客.
本文是探究python包中scipy.signal.resample的效果的,确切滴说是记录。

resample

这里是python关于resample函数的官方解释:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample.html
该函数简单粗暴,也很适合我的需求,直接将原信号重采样到指定长度,scipy.signal.resample(x, num, t=None, axis=0, window=None, domain='time'),下面看一下代码和效果

import numpy as np
from scipy.signal import resample, resample_poly
import matplotlib.pyplot as plt
import scipy.fft as fft

x = np.linspace(0, 10, 600, endpoint=False)
y = np.cos(x**2/6.0*5)+np.cos(x*6.28*5)+np.sin(x**2*6.28*5)+np.random.normal(0, 1)*2

f = resample(y, len(x)//4)
xnew = np.linspace(0, 10, len(f), endpoint=False)

plt.plot(x, y, 'g.-', xnew, f, 'm.-', markersize=5)
plt.legend(['data', 'resampled'], loc='best')
plt.show()

fs = int(len(x) / (max(x)-min(x)))
wx = np.linspace(0, fs/2, len(x)//2+1)
fx = fft.fft(y).real[0:len(y) // 2 + 1]
plt.plot(wx, fx)
plt.xlim([0, 8])

plt.figure()
fs = fs / 4
wx = np.linspace(0, fs/2, len(xnew)//2+1)
fx = fft.fft(f).real[0:len(f) // 2 + 1]
plt.plot(wx, fx)
plt.xlim([0, 8])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到,该函数在对信号进行时域重采样的同时,保留了频域特征,没毛病。

resample_poly

这个函数的效果也跟上面一样,只是使用的方法原理有差异,官网介绍在:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample_poly.html,它解释说比上面的操作略快,我没有实际测试,效果差不多。代码放这里,效果就不展示了,频域特征也保留了。scipy.signal.resample_poly(x, up, down, axis=0, window=('kaiser', 5.0), padtype='constant', cval=None)里面的up以及down分别填写目标采样率和当前信号采样率,或者采样点,都行。原论文里提到用的是MATLAB里面的resample函数,我也就使用了这个python里面对应的resample_poly了。

import matplotlib.pyplot as plt
import scipy.fft as fft

x = np.linspace(0, 10, 600, endpoint=False)
y = np.cos(x**2/6.0*5)+np.cos(x*6.28*5)+np.sin(x**2*6.28*5)+np.random.normal(0, 1)*2

f = resample_poly(y, len(x)//4, len(x))
xnew = np.linspace(0, 10, len(f), endpoint=False)

plt.plot(x, y, 'g.-', xnew, f, 'm.-', markersize=5)
plt.legend(['data', 'resampled'], loc='best')
plt.show()

fs = int(len(x) / (max(x)-min(x)))
wx = np.linspace(0, fs/2, len(x)//2+1)
fx = fft.fft(y).real[0:len(y) // 2 + 1]
plt.plot(wx, fx)
plt.xlim([0, 8])

plt.figure()
fs = fs / 4
wx = np.linspace(0, fs/2, len(xnew)//2+1)
fx = fft.fft(f).real[0:len(f) // 2 + 1]
plt.plot(wx, fx)
plt.xlim([0, 8])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【vue】生命周期,组件,插槽,依赖注入,实现分页器组件,异步组件,keep-alive

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 生命周期总结组件例子轮播图组件 在组件中使用v-modelMixin插槽具名插槽实现一个分页器 依赖注入…

【软件测试】软件测试总结笔记(1)

软件测试理论总结 1.Introduction1.1 What is Software Bug1.2 Tester的职责和目标其他概念软件测试的分类 2.软件开发生命周期Software Development ProcessSoftware Development Lifecycle ModelsTDD - Test-Driven Development测试驱动开发(一种敏捷开发&#x…

城市微博签到数据分享地址解码与纠偏教程

收录于合集 #开源4个 #GIS34个 #社交媒体2个 #大数据4个 哈喽大家好,我又来啦!最近一直有小伙伴私戳问我要 签到数据,本着 开源共享的精神,我这次给大家分享中国多个城市2022年9月的匿名签到数据,欢迎大家点击在看…

用Python做兼职,轻松赚取零花钱,分享Python兼职经验

文章目录 前言一、技术方案二、接单流程三、注意事项四、总结 前言 某家电商公司需要从竞争对手的网站上获取商品信息,以便更好地了解市场情况和竞争对手的策略。由于该公司没有专门的技术团队,因此他们需要找一家专业的爬虫服务公司来帮助他们完成这项…

冈萨雷斯DIP第4章知识点

文章目录 4.1 背景4.3 取样和取样函数的傅里叶变换4.5 二变量函数的傅里叶变换4.6 二维 DFT 和 IDFT 的一些性质4.6.6 二维离散卷积定理 4.7 频率域滤波基础4.7.3 频率域滤波步骤小结4.7.4 空间域和频率域滤波之间的对应关系 4.8 使用低通频率域滤波器平滑图像4.9 使用高通滤波…

Nacos作为服务注册中心简单示例

一、服务注册与发现场景 主要包含两个服务: zhshl-order服务: 作为服务消费者zhsl-stock服务: 作为服务提供者 当我们启用服务发现的时候,需要进行的操作主要有三步 0、前置条件,需要先搭建好一个nacas服务,可以是一个集群或者是单个nacos服务。可以…

MySQL 数据定义语言 DDL

文章目录 数据定义语言 DDL表的设计范式第一范式(1NF)第二范式(2NF)第三范式(3NF) 创建表修改表删除表截断表 数据定义语言 DDL 前面我们学习的 DML 语言,主要实现对数据的增、删、改等基本操作…

零基础入门网络安全必看的5本书籍(附书单pdf)

作为一个Java转行网络安全的过来人,我深知自学时的种种不易,同时也经常有粉丝朋友问我:刚入门应该怎么学、有哪些书籍推荐等问题,今天我就把我自己的学习书单分享给大家,希望对大家有帮助! 一、5本必读书籍…

JVM垃圾回收——对象进入老年代

目录 1、什么是大对象以及大对象对垃圾回收的影响 2、什么情况下对象会进入老年代 2.1 当创建对象的大小超过-XX:PretenureSizeThreshold的设定值 2.2 长期存活的对象将进入老年代 2.3 动态年龄判定 2.4 空间担保分配 什么是空间分配担保? 为什么要…

uploads靶场通关(1-11关)

Pass-01(JS校验) 看题目我们准备好我们的php脚本文件,命名为1.php 上传该php文件,发现上传失败 方法一:将浏览器的JavaScript禁用 然后就能上传了 方法二: 查看源码,发现只能上传以下形式的文…

【Docker】LXC所实现的隔离性、Linux Namespace等讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

域名解析异常有哪些办法?如何实现动态域名解析?

什么是域名解析? 域名解析就是把域名解析成一个ip地址,我们大多数人都喜欢记忆域名,但是机器只认识IP地址,只要这个IP地址对应相关域名,这就叫域名解析。 工作中常会遇到域名解析故障,比如访问站点对应的…

FPGA问答系列--Vivado Schematic中的实线和虚线有什么区别?

FPGA问答系列–Vivado Schematic中的实线和虚线有什么区别? 前言:本文章为FPGA问答系列,我们会定期整理FPGA交流群(包括其他FPGA博主的群)里面有价值的问题,并汇总成文章,如果问题多的话就每周…

ChatPPT一键制作PPT,效果拉满!

💧 C h a t P P T 一键制作 P P T ,效果拉满! \color{#FF1493}{ChatPPT一键制作PPT,效果拉满!} ChatPPT一键制作PPT,效果拉满!💧 🌷 仰望天空,妳我…

阿里云nginx配置https踩坑(配置完后访问显示无法访问此网站)

本人小前端一枚,最近在玩服务器部署自己的东西时踩了个坑!!! server {listen 443 ssl;server_name localhost;ssl_certificate 证书.com.pem;ssl_certificate_key 证书.com.key;#后台管理静态资源存放location / { #文件目…

2023-06-04 Unity ScriptableObject2——ScriptableObject 的应用

文章目录 一、配置数据二、复用数据三、多态特性的利用四、单例模式获取数据 一、配置数据 ​ ScriptableObject 数据文件非常适合用来做配置文件: 配置文件的数据在游戏发布之前定规则配置文件的数据在游戏运行时只会读出来使用,不会改变内容在 Unity…

MPS|如何学习电路设计?帮你快速上手

​电路设计是电子工程中的重要领域之一,涉及到电子元件的选择、电路的设计和分析、电路板的制作等多个方面。对于初学者来说,学习电路设计需要掌握一定的基础知识和技能,同时需要有耐心和实践经验。本文将从七个方面总结如何学习电路设计&…

Vue (9)

Vue (9) 文章目录 1. 消息订阅与发布1.1 总结1.2 修改 TodoList 案例 2. 为 TodoList 添加编辑功能3. $nextTick4. 过度与动画4.1 动画效果4.2 过度效果4.3 集成第三方动画4.4 总结4.5 修改 TodoList 案例 1. 消息订阅与发布 上文我们已经将全局事件总线学完了知道了全局事件总…

day6 -- 数据的分组和描述性统计

学习内容 描述性统计函数,包括平均值,最大/小值,行数,总和使用 GROUP BY子句和HAVING子句 对数据进行分组操作 描述性统计数函数 除了上面提到的聚合函数外,MySQL还提供了以下其他一些常用的聚合函数: – …

Python学习40:维吉尼亚密码——解密

凯撒密码的加密强度是很低的,只需简单地统计字频就可以破译。人们在单一凯撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪…