小波分析——4.使用小波对信号成分进行分析

news2024/12/23 18:41:45

文章目录

  • 首先创建一个包含多频率成分的信号
  • 然后我们用数学实现一个墨西哥草帽小波
  • 然后我们开始对原始信号进行处理吧
  • 接下来可以把信号成分进行绘制

在前面的章节里已经介绍过小波的理论、公式等知识点,现在我们来看看如何用小波来实现对复杂信号的成分分析。

在我们这个示例代码里,我们只使用到如下几个库:

import numpy as np
from matplotlib import pyplot as plt

首先创建一个包含多频率成分的信号

我们使用numpy和python来实现相关代码,并且所用的小波函数为墨西哥帽小波。于是我们可以得到下面这些代码:

# 创建信号和时间数组
num_samples = 1000
duration = 1.0
time = np.linspace(0, duration, num_samples)
signal = np.sin(2 * np.pi * 10 * time) + np.sin(2 * np.pi * 5 * time) + np.sin(2 * np.pi * 1 * time)

感兴趣的话,可以使用FFT工具对上述信号成分进行分析,其具体代码为:

# 对原始信号的频率进行分析
spectrum = np.fft.fft(signal) # 计算信号的频谱
freq = np.fft.fftfreq(signal.size, d=duration/num_samples) # 计算频率数组

# 绘制原始信号的频谱
plt.plot(freq, np.abs(spectrum))
plt.xlabel('Frequency')
plt.ylabel('Amplitude')
plt.show()

然后我们用数学实现一个墨西哥草帽小波

墨西哥草帽小波(Mexican Hat Wavelet)也叫Ricker小波,是一种常用的小波函数,其可以应用于信号处理、图像处理等领域。

它的数学公式为:

ϕ ( t ) = 2 3 σ π 1 4 ( 1 − t 2 σ 2 ) ⋅ e x p ( − t 2 2 σ 2 ) \phi (t) = \frac{2}{\sqrt{3\sigma} \pi^{\frac{1}{4}} } (1 -\frac{t^2}{\sigma^2}) \cdot exp(\frac{-t^2}{2 \sigma^2}) ϕ(t)=3σ π412(1σ2t2)exp(2σ2t2)

看起来挺复杂的,但是还可以进一步简化为:

ϕ ( t ) = ( 1 − t 2 ) ∗ e x p ( − t 2 / 2 ) \phi (t) = (1 - t^2) * exp(-t^2 / 2) ϕ(t)=(1t2)exp(t2/2)

因为其他几项都是常熟C,所以我们可以直接隐去。然后就有如下实现公式:

def base_wavelet_ricker(frequency, num_samples, sampling_time=1.0):
    t = np.linspace(-sampling_time/2, sampling_time/2, num_samples)
    wavelet = (1.0 - 2.0 * np.pi**2 * frequency**2 * t**2) * np.exp(-np.pi**2 * frequency** 2 * t**2)
    return wavelet

然后我们开始对原始信号进行处理吧

# 分别使用1-16Hz的小波函数对信号进行小波变换
wavelets = []
for i in range(1, 17):
    wavelet = base_wavelet_ricker(i, num_samples, duration)
    wavelets.append(wavelet)

# 使用阈值法,对小波变换后的信号成分进行筛选
threshold = 0.5
results = []
for i in range(len(wavelets)):
    result = np.convolve(signal, wavelets[i], mode='same')
    result = np.convolve(result, wavelets[i], mode='same')
    result[np.abs(result) < threshold] = 0
    results.append(result)

接下来可以把信号成分进行绘制

接下来我们把处理后的数据按时间、频率、幅度进行绘制,因此得到所谓的三维 时频图

# 创建三维坐标轴对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制小波时频图
X, Y = np.meshgrid(time, range(1, 17))
ax.plot_surface(X, Y, np.array(results), cmap='rainbow')

# 设置坐标轴标签
ax.set_xlabel('Time (s)')
ax.set_ylabel('Frequency (Hz)')
ax.set_zlabel('Amplitude')

# 显示图像
plt.show()

然后得到的显示结果如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

现在我们看到,在对信号进行处理后,可以看到信号主要集中在0-5Hz,并且一直持续到10Hz左右都有信号分布。

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

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

相关文章

性能优化系列之『HTML5 离线化:主流的技术实现方案有哪些?』

文章の目录一、离线包类型二、离线包架构三、离线包下载四、离线包运行模式五、大厂离线包方案写在最后一、离线包类型 全局离线包&#xff1a;包含公共的资源&#xff0c;可供多个应用共同使用私有离线包&#xff1a;只可以被某个应用单独使用 二、离线包架构 三、离线包下载…

Fairness in Recommendation: A Survey 阅读笔记

论文链接 搁置了许久的毕设&#xff0c;又要开始重新启航。 2022年的最后一段时间过得真是很崎岖&#xff0c;2023希望大家平安喜乐。 课设还未结束&#xff0c;但是毕设不能再拖&#xff0c;开工啦&#xff01;这又是一篇综述&#xff0c;有关推荐系统中的公平性&#xff0c;…

5.Isaac教程--创建Isaac应用

创建Isaac应用 本教程将指导您完成使用 Isaac SDK 创建机器人应用程序的过程&#xff0c;以视频输入的 OpenCV 边缘检测处理为例。 文章目录创建Isaac应用预安装显示相机源创建应用程序文件启用节点间通信配置组件创建 Bazel 构建文件运行应用程序查看相机源处理相机源添加边缘…

1.6日报

以redis为基础完成 addCacheData getCacheDataByUniqueId delCacheDataByUniqueId 并且测试通过。 升级getQRcodeAndScene接口&#xff0c;添加版本参数&#xff0c;实现“不同环境取不同小程序版本“功能 并添加扫码跳转页面功能。 遇到的问题及解决 加深对RequestBody…

性能优化系列之『HTTP-2 :升级HTTP-2的好处有哪些?如何升级?』

文章の目录一、HTTP/2 概念二、HTTP/2 优点三、HTTP/2 站点的优势四、在 Nginx 上启用 HTTP/21、升级 OpenSSL2、重新编译3、验证 HTTP/24、浏览器请求截图写在最后一、HTTP/2 概念 HTTP/2&#xff08;超文本传输协议第2版&#xff0c;最初命名为 HTTP 2.0&#xff09;&#x…

【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知Advice注解

文章目录前言AOP与Spring AOPAspect简单案例快速入门一、Pointcutannotation二、五种通知Advice1. Before前置通知2. After后置通知3. AfterRunning返回通知4. AfterThrowing异常通知5. Around环绕通知总结前言 在微服务流行的当下&#xff0c;在使用SpringCloud/Springboot框…

分布式基础篇3——前端开发基础知识

前端技术对比一、ES61、简介2、什么是 JavaScript3、ES6新特性3.1 let3.2 const3.3 解构表达式3.4 字符串扩展3.5 函数优化3.6 对象优化3.7 map 和 reduce3.8 Promise3.9 模块化二、Vue1、MVVM 思想2、Vue 简介3、Vue 入门案例4、Vue 指令插值表达式v-text、v-htmlv-bindv-mode…

景区地图最短路径快速实现

1 前言以前粗略学习了一下在地图中实现最短路径&#xff0c;并在切图工具中实现了自动处理生成导航相关数据。https://blog.csdn.net/bq_cui/article/details/86795213最近发现工具实现的结果&#xff0c;错误一大堆。这次再详细捋一捋整个步骤&#xff0c;感兴趣的同学可以试一…

ctemplate 的安装和使用

ctemplate 用于linux下的web开发&#xff0c;可以动态生成一个html网页&#xff0c;这里的 “ 动态 ” 指的是网页的数据不是固定的&#xff0c;可以使用变量来填充网页内容。 目录 1、下载ctemplate 2、安装 ctemplate 3、使用ctemplate库 1、下载ctemplate 可以在gite…

前端对接微信公众号网页开发流程,授权对接

前面讲到 前端对接微信公众号网页开发流程&#xff0c;前期配置&#xff0c;本篇文章主要详细介绍关于公众号的授权对接。 一、引入微信js-sdk 在需要调用 JS 接口的页面引入如下 JS 文件 http://res.wx.qq.com/open/js/jweixin-1.6.0.js如需进一步提升服务稳定性&#xff0…

如何在windows上使用VMware安装macOS虚拟机

如何在windows上使用VMware安装macOS虚拟机一、准备工作1.1 安装 VMware1.2 下载macOS的安装包1.3 下载VMware虚拟机解锁安装苹果系统工具二、解锁VMware支持macOS安装2.1 关闭已经打开的VMware软件2.2 安装VMware Workstation Unlocker三、VMware创建虚拟机3.1 解压缩macOS的安…

【蓝桥杯】X 进制减法

难点一&#xff1a;base base * s[i] % mod;//***当前位乘以x&#xff0c;x要*s[i],一直要乘到个位的进制难点二&#xff1a;当当前该位的的进制位&#xff0c;为max(max(a[i]1, b[i]1), 2)的时候&#xff0c;结果最小ACcode:#include<iostream>using namespace std;con…

性能优化系列之『混合式开发: React Native内核及优势介绍』

文章の目录一、React Native愿景二、技术优势1、技术2、效率3、发版三、底层内核1、RN&#xff1a;helloWorld.jsx2、iOS&#xff1a;helloWorld.m3、Android&#xff1a;helloWorld.xml4、Web&#xff1a;helloWorld.html四、行业背景五、选型建议写在最后一、React Native愿景…

【计算机体系结构基础】指令流水线

单周期处理器 简要描述单周期处理器的执行过程&#xff1a; PC从指令存储器中读取指令 取指后译码得出相关的控制信号读取regfile&#xff08;寄存器堆&#xff09; 运算器对regfile中取出的操作数进行计算&#xff0c;将计算的结果写回通用寄存器堆或者得到访存指令的地址或…

边缘数据采集网关如何实现PLC远程上下载

边缘数据采集网关&#xff0c;又称边缘计算网关、工业物联网网关&#xff0c;是连接工业设备与通信网络的桥梁&#xff0c;可以实现不同协议之间的解析转换&#xff0c;打造高效实时的数据采集系统&#xff0c;并借助边缘计算规则对数据进行清洗过滤&#xff0c;适配云平台实现…

QT 学习笔记(十五)

文章目录一、UDP 通信过程1. Linux 下的 UDP 通信过程2. QT 下的 UDP 通信过程3. 在 QT 中实现 UDP 通信的流程4. TCP/IP 和 UDP的区别二、UDP 文本发送1. UDP 文本发送实例演示2. UDP 广播3. UDP 组播三、UDP 文本发送实现代码1. 主窗口头文件 widget.h2. 主窗口源文件 widget…

论文创新及观点

FEW-SHOT TEXT CLASSIFICATION WITH DISTRIBUTIONAL SIGNATURES 任务 Given an N-way K-shot classification task 论文设计图像 数据集 20 Newsgroups is comprised of informal discourse from news discussion forums (Lang, 1995).Documents are organized under 20 to…

数据分析-深度学习 Day2

目录&#xff1a;第一节 机器学习&深度学习介绍第二节 机器学习攻略一、机器学习的框架二、模型训练攻略三、针对Optimization Issue的优化&#xff0c;类神经网络训练不起来怎么办(一) 局部最优点和鞍点(二) 批处理和momentum(三) 自动调节学习率Learning rate(四) 损失函…

vue实现微信端和企业微信端扫码

前要&#xff1a;微信端调用微信的扫一扫和企业微信端调用企业微信的扫一扫获取订单码查询&#xff01;&#xff01; 一、微信端扫一扫 这里使用的是uniapp框架调用微信的内置sdk扫码防伪溯源&#xff01;http引入或者npm安装模块&#xff1a; //public/index.html <!DOCT…

《设计模式》命令模式

《设计模式》设计模式的基本原则 《设计模式》单例模式 《设计模式》工厂模式 《设计模式》原型模式 《设计模式》建造者模式 《设计模式》适配器模式 《设计模式》桥接模式 《设计模式》装饰者模式 《设计模式》组合模式 《设计模式》外观模式 《设计模式》享元模式 《设计模式…