文章目录

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

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

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

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σ ​π41​2​(1−σ2t2​)⋅exp(2σ2−t2​)

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

ϕ ( t ) = ( 1 − t 2 ) ∗ e x p ( − t 2 / 2 ) \phi (t) = (1 - t^2) * exp(-t^2 / 2) ϕ(t)=(1−t2)∗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.abs(result) < threshold] = 0results.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左右都有信号分布。

小波分析——4.使用小波对信号成分进行分析相关推荐

  1. 小波分析:db小波的分解与重构

    小波分析:db小波的分解与重构 最近在利用行波测距中使用到了小波变换的模极大值提取行波波头的时间,苦于公开资源太少,无从下手.最终经过学习,有所所获,希望可以帮助到有需要的同学. 贴一段matlab的 ...

  2. 小波、超小波(多尺度几何分析)与压缩感知

    0. 图书 基于MATLAB 6.X的系统分析与设计-小波分析. 胡昌华,李国华,刘涛,等.西安:西安电子科技大学出版社,2004 MATLAB小波分析高级技术. 周伟,桂林,周林,等.西安:西安电子 ...

  3. 小波的秘密5_多分辨率分析和连续小波变换2

    1.如何理解时间分辨率和频率分辨率? In this section we will take a closer look at the resolution properties of the wa ...

  4. 小波包matlab,小波分析(第三讲)小波包二代小波Matlab工具使用

    <小波分析(第三讲)小波包二代小波Matlab工具使用>由会员分享,可在线阅读,更多相关<小波分析(第三讲)小波包二代小波Matlab工具使用(82页珍藏版)>请在人人文库网上 ...

  5. 数字信号处理--基于MATLAB的小波去噪算法--小波变换在信号降噪和压缩中的应用

    小波分析的重要应用之一就是用于信号消噪,首先简要地说明一下小波变换实现信号消噪的基本原理. 一.基本原理 含噪的一维信号模型可以表示如下 式中s(k)为含噪信号,f(k)为有用信号,e(k)为噪声信号 ...

  6. 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析

    基于matlab小波工具箱的数字图像处理及小波分析 基于 Matlab 小波工具箱的数字图像处理摘要:小波分析在图像处理中有非常重要的应用,包括图像压缩.去噪.分解和增强等.运用多分辨率分析可以将信号 ...

  7. 基于MATLAB的小波收缩法信号去噪

    信号在采集.传输和获取的过程中难免会受到各种噪声的干扰,这些噪声也极大地影响着人们从信号中获取有用的信息,因此对信号去噪的研究显得十分重要.小波去噪是近年来信号与信息处理领域的热门技术,利用小波算法对 ...

  8. Matlab小波工具箱的使用2

    Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...

  9. matlab upcoef,Matlab小波工具箱的使用2

    工具箱提供了如下函数做一维信号分析: Function Name Purpose 分解函数 dwt 一层分解 wavedec 分解 wmaxlev 最大小波分解层数 重构函数 idwt 一层重构 wa ...

最新文章

  1. R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
  2. 笔试算法题--汪仔换道具
  3. .net页面数据传递
  4. boost::log模块实现宽字符日志记录示例
  5. echarts 3d地球 背面光线太暗_新技术:多波长光源,同时3D打印多种光敏树脂材料...
  6. 「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践
  7. 回文数(信息学奥赛一本通-T1309)
  8. Hadoop教程(一)
  9. 使用python生成c文件模板
  10. 如何去实现java与数据库的连接
  11. python tif转jpg_怎样把TIF转化为JPG图片格式
  12. java解析pdf 图片文字_Java 读取PDF中的文本和图片
  13. 你不可不知的《哈利波特》秘密之卑鄙的海尔波
  14. 羊车门问题的python代码_作业:羊车门问题
  15. 【 网工在线画拓扑,赶紧保存收藏!】
  16. 点云库pcl从入门到精通 第十章
  17. 天价月饼被套上“紧箍咒”,499元成天花板?
  18. 腾讯徐春明:互联网金融行业HBase实践与创新
  19. 用 Python 压缩文件方法汇总
  20. 如何建立一流的互联网产品研发体系?

热门文章

  1. 软众数据安全专家DSE源代码加密解决方案
  2. R语言使用dplyr包的arrange函数对dataframe数据进行排序
  3. laravel 根据时间分组
  4. 2022年会计实操-账务处理
  5. About EDW 命名规范参考
  6. 帮我用C语言写个程序,内容是实现给QQ群发消息
  7. CC2530基础实验:(9)AD采集cc2530温度串口显示
  8. ACM 训练大纲(CSUST_ACM)
  9. Python正则表达式的几种匹配用法
  10. 海外最早 Cocos 使用者:如何发布游戏至 10 亿用户平台 Viber?