Python 信号分析——小波变换
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、小波变换实现方式
- 二、使用步骤
- 1.主要代码
- 2.示例Demo
- 总结
前言
前面提到信号FFT变换的基本原理是将信号看成是多个正弦信号(三角函数)叠加而成,但小波分析是将信号看成有小波函数叠加而成,这样在对非稳态信号进行分析时,则会利用到小波函数伸缩性等优点。
一、小波变换实现方式
小波变换分为:1、连续小波变化(CWT);2、离散小波变化(DWT)。
其中连续小波变化主要用于信号的时频分析,离散小波变化用于信号的分解。
二、使用步骤
1.主要代码
代码如下(示例):
import pywt
import numpy as np
import matplotlib.pyplot as pltdef cwt(x, fs, totalscal, wavelet='cgau8'):if wavelet not in pywt.wavelist():print('小波函数名错误')else:wfc = pywt.central_frequency(wavelet=wavelet)a = 2 * wfc * totalscal/(np.arange(totalscal,0,-1)) period = 1.0 / fs[cwtmar, fre] = pywt.cwt(x, a, wavelet, period) amp = abs(cwtmar)return amp, fredef dwt(x,wavelet='db3'):cA, cD = pywt.dwt(x, wavelet, mode='symmetric')ya = pywt.idwt(cA, None, wavelet, mode='symmetric') yd = pywt.idwt(None,cD, wavelet,mode='symmetric') return ya, yd, cA, cD
2.示例Demo
代码如下(示例):
# -*- coding: utf-8 -*-import pywt
import numpy as np
import matplotlib.pyplot as pltdef cwt(x, fs, totalscal, wavelet='cgau8'):if wavelet not in pywt.wavelist():print('小波函数名错误')else:wfc = pywt.central_frequency(wavelet=wavelet)a = 2 * wfc * totalscal/(np.arange(totalscal,0,-1)) period = 1.0 / fs[cwtmar, fre] = pywt.cwt(x, a, wavelet, period) amp = abs(cwtmar)return amp, fredef dwt(x,wavelet='db3'):cA, cD = pywt.dwt(x, wavelet, mode='symmetric')ya = pywt.idwt(cA, None, wavelet, mode='symmetric') yd = pywt.idwt(None,cD, wavelet,mode='symmetric') return ya, yd, cA, cDif __name__ == '__main__':w = 5z = 30fs = 1024fsw = 5time = 10f = w * zt = np.linspace(0, time - 1 / fs, int(time * fs))x = (1 + 1 * np.sin(2 * np.pi * 20 * t)) * np.sin(2 * np.pi * f * t)amp, fre = cwt(x, fs, 512, 'morl')plt.figure(1)plt.subplot(2, 1, 1)plt.plot(t, x)plt.ylabel('Amplitude')plt.xlabel('time')plt.subplot(2, 1, 2)plt.contourf(t, fre, amp)plt.ylabel('Frequency')plt.xlabel('time')# 离散小波分析ya,yd,_,_ = dwt(x,'db3')plt.figure(2)plt.plot(t, ya)plt.xlabel('time')plt.ylabel('近似系数')plt.show()
总结
上面示例中,连续小波变化返回的是小波系数,尺度频率;离散小波变换返回的是近似系数、细节系数。
随着小波变化的发展,后面出现了小波包变换,对信号的细节分析进一步加强。
小波变换的效果受小波函数影响较大,曾经在故障诊断领域流行过一段时间,也出现了不少论文,但在该实际工程应用中,大家持谨慎态度。
PS:欢迎各位交流,后续有啥想实现的信号处理功能,请在下方评论区留言,或者关注公众号:不说话上代码
Python 信号分析——小波变换相关推荐
- python信号分析_Python频谱分析
我正在尝试估计ECG信号的心率变异性的PSD.为了测试我的代码,我从fantasia ECG database中提取了R-R间隔.我已经提取了信号,可以访问here.为了计算PSD,我使用的是如下所示 ...
- Python信号分析 | 连续信号的傅立叶变换
1.连续周期信号的傅立叶级数 由傅立叶级数的形式可以看出,其都属于积分形式,故在MATLAB中和Python中均可以用积分函数来实现求解. 例:Python中代码如下: ""&qu ...
- Python信号分析—波峰波谷
@[TOC](文章目录) #任务目标 以折线图的形式表现信号,以茎图的形式表现波峰波谷数值,检验给出的波峰波谷数值是否与原信号相符 一.Material 数据:GitHub - SHUTCM-tcme ...
- 计算机算法音乐专业,音乐信号分析算法的乐理简说(非音乐专业的乐理)
前言 这篇文章不是讲乐理知识的,那是音乐制作人,编曲人员所需要钻研的学问,不过你要有兴趣也可以看看专业的乐理知识. 这里仅仅是说在音乐信号分析的项目中,我们需要知道的一些参数的意义. 在诸多信号处理, ...
- 心音与心电信号分析之一--6.26--心音信号数字滤波
这才是我要学习的重点哇... 传统的低通,高通滤波,维纳滤波,卡尔曼滤波,自适应滤波属于线性滤波,在消除噪声的同时,往往会造成信号的奇异点改变或信号边缘模糊不清等不利因素,而同态滤波主要解决的是信号与 ...
- MNE-Python | 开源生理信号分析神器(一)
介绍MNE-Python系列文章,持续更新中- 0. 什么是MNE ? 开门见山地说,MNE是我用过的最强生理信号分析神器(可能是我见识浅薄,大佬勿喷),处理范围涵盖EEG.MEG等各种类型. MNE ...
- 【C4】基于深度学习的心电信号分析
★★★ 本文源自AI Studio社区精品项目,[点击此处]查看更多精品内容 >>> 基于深度学习的心电信号分析 一.项目背景 近年来,随着人工智能和算法的发展,以机器学习和深度学习 ...
- 《MATLAB语音信号分析与合成(第二版)》:第4章 语音信号的线性预测分析
<MATLAB语音信号分析与合成(第二版)>:第4章 语音信号的线性预测分析 前言 1. 数据与函数路径设置 2. MATLAB仿真一:LPC的频谱分析 3. MATLAB仿真二:普通预测 ...
- 《MATLAB语音信号分析与合成(第二版)》:第8章 基音周期的估算方法
<MATLAB语音信号分析与合成(第二版)>:第8章 基音周期的估算方法 前言 1. 数据与函数路径设置 2. MATLAB仿真一:基音周期提取的预处理 3. MATLAB仿真二:倒谱法的 ...
最新文章
- 酒桌游戏c语言,最受欢迎的12种酒桌游戏
- windows系统中,在当前目录下打开cmd命令行的两种方法
- 判断三个数最大的数 从结果出发思考问题
- codeforce 603B - Moodular Arithmetic
- 眼压与角膜厚度的关系
- 玻璃体液化研究(控制)
- LeetCode 886. 可能的二分法(着色DFS/BFS/拓展并查集)
- 通过AVFoundation框架获取摄像头数据
- PyCharm使用期间出现报错集合 持续更新ing
- 【报告分享】2020企业精细化运营白皮书.pdf(附下载链接)
- iOS:ASIHttpRequest虽不更新,但仍值得详细了解
- composer:php的依赖管理工具
- 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
- 谷歌浏览器 官网下载离线安装包
- Oracle | oracle11g安装环境变量配置
- Maven错误:was cached in the local repository, resolution will not be reattempted until the update
- 大哥都是从小弟做起的
- 【No JSON object could be decoded】问题解决
- 201912月灵感记录
- 如何抓取 bet365 即时足球比分数据
热门文章
- 转贴: AV音响连接方法 - 回上个问题,次世代音轨通过HDMI透传给了功放,那图像信号怎么给到电视? 这篇文章教你...
- 后端存储实战课——设计篇
- 网红张大奕订婚:未婚夫不是蒋凡 传是地产富二代
- Linux 操作文本内容命令
- U盘损坏了变成未格式化?如何格式化U盘而不丢失数据?
- 使用css排版推特上的星星爆炸效果。
- 现代软件工程_团队项目_阿尔法阶段_阿里云服务器部署_2017.11.24
- [导入][转]1997年南航空难BlackBox12分钟录音网上曝光
- CCRC信息安全服务资质有哪几种常见的类型?
- 如何微信增粉5万?从偶遇微信地推员说起