iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 小波分析
  • 586
分享到

Python 小波分析

python 2023-09-29 11:09:51 586人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python 小波分析和小波相干 文章目录 python 小波分析和小波相干写在前面小波分析小波相干小结 写在前面 这个东西单纯为了记录一下用Python做小波分析和小波相干的过程,以

python 小波分析和小波相干

文章目录

写在前面

这个东西单纯为了记录一下用Python做小波分析和小波相干的过程,以及怎么理解得的的结果。MATLAB中有很成熟的小波工具包,python中也有好几个可以做小波分析的包。我自己使用了Pyleoclim,这个包主要是用来做古气候数据处理和分析的,主要的功能如下图。这个文章只涉及小波分析部分,代码在链接的教程中都要。Pyleoclim包目前支持Python 3.9以上版本。再次强调,代码都来自于链接教程!!!
图1

小波分析

例子中用到了两个古气候数据,一个是同位素氘,另一个是 C O2 CO_2 CO2

首先加载需要用到的包

import matplotlib.pyplot as pltimport pandas as pdimport pyleoclim as pyleoimport numpy as np

然后读取数据,并将数据存入pyleoclim包中的 Series类型,主要给定序列的名称和时间。

DDDf = pd.read_csv('../data/edc3Deuttemp2007.csv')dDdf.head()dDts = pyleo.Series(time=dDdf['Age']/1000,value=dDdf['Deuterium'],time_name='Age',time_unit='kyr BP',value_name = r'$\deltaD$', value_unit=u'\u2030',label=r'EPICA Dome C $\delta D$')dDts.plot()

同位素氘数据
同位素氘时间序列
需要注意的是,这个数据的采样点在时间上并不平均,即相邻两个数据点的时间间隔并不一致。

这不满足一些分析的基本要求,或者会增加一些分析的难度和不确定性。

fig, ax = plt.subplots()plt.hist(np.diff(dDts.time))plt.xlabel(r'$\Delta t (kyr)$')plt.ylabel('# occurrences')plt.title('Distribution of age increments',weight='bold')

同位素氘数据的时间间隔分布
因此,需要在时间上以500年的时间分辨率进行插值,并对序列进行标准化。

dD05 = dDts.interp(step=0.5).standardize() 

小波分析 直接通过调用 wavelet 方法来实现

scal = dD05.wavelet()scal.plot()

同位素氘小波分析图
pyleoclim给了两种计算显著性的方式,分别是参数化逼近方法 ar1asym,另一种是模拟方法 ar1sim

ar1asym方法

scal_sig = scal.signif_test(method='ar1asym')scal_sig.plot()

ar1asym方法求显著性
ar1sim方法

scal_sig2 = scal.signif_test(method='ar1sim', number = 1000)scal_sig2.plot()

ar1sim方法求显著性
这个结果显示该时间序列在300-600 kyr BP存在显著的100kyr周期。

小波相干

同位素氘可以作为指示温度变化的指标, 接下来读入 C O2 CO_2 CO2序列,并使用小波相干分析两者关系。

url = 'ftp://ftp.ncdc.noaa.Gov/pub/data/paleo/icecore/antarctica/antarctica2015co2composite.txt'co2df = pd.read_csv(url,skiprows=137,sep='\t')co2df.head()

co2数据

co2ts = pyleo.Series(time=co2df['age_gas_calBP']/1000,value= co2df['co2_ppm'],time_name='Age',time_unit='kyr BP',value_name = r'$CO_2$',value_unit='ppm',label='EPICA Dome C CO2')co2ts.plot(color='C1')

co2序列变化图
从变化图中可以明显看到和同位素氘序列类似的冰期间冰期循环,以及工业革命后的快速爬升。

将两者画在一张图上

ms = pyleo.MultipleSeries([dDts,co2ts])ms.plot()

co2和氘变化
对两者都进行标准化

ms.standardize().plot()

标准化后的co2和氘
调用wavelet_coherence方法进行小波相干分析

coh = co2ts.wavelet_coherence(dDts,method='wwz')fig, ax = coh.plot()

co2和氘的小波相干
小波相干-wavelet transform coherency (WTC) 的结果可以理解为两个变量在时频域的相关性的平方,0表示不相关,1表示相关; 箭头表示两个变量在某个时频上的相位关系,根据三角函数转换,右 = 0度, 上 = 90度, 左 = 180度, 下 = -90 or + 270度。

图中基本向右的箭头表示 C O2 CO_2 CO2和 氘 的变化在相应的时间和频域上的相位角接近零。

可以计算一定频率区间内的平均相位角。

coh.phase_stats(scales=[80,100])

结果为:

Results(mean_angle=0.2855352895679047, kappa=25.30163136494105, sigma=0.20083246106901098, kappa_hi=486.4211381097546, sigma_lo=0.045364651843896514)

这个结果说明,在80-100kyr的轨道周期上,这两个序列的变化基本是同相位的,两者之间不存在显著的提前或者滞后。

同样,也可以计算小波想干的显著性。

coh_sig = coh.signif_test(number=100)fig, ax = coh_sig.plot()

小波相干显著性

借用matab小波工具箱文档 来解释箭头方向的意义。

下面图片是matlab文档中 nino3指数(热带太平洋某区域的海温,ENSO)与印度降水的小波相干图。
nino3和降水
图中表示nino3指数和印度降水在2-7年周期上(ENSO的主要周期)具有较强的相关,箭头的方向说明两者之前存在3/8到1/2(箭头向左) 周期的滞后(即1-3.5年)。这张图就说明热带太平洋海温(ENSO)与印度的降水存在相关,但是这影响存在1-3.5年的滞后。

小结

本文主要是记录一下学习小波分析和小波相干分析的笔记。相关原始内容在文中的链接中都可以找到,当然我个人的理解可能存在一定问题,希望大家有自己的认识。再次强调,虽然本人已经使用pyleoclim包做了自己的分析,但是为了方便,本文中使用的代码和图片均来自于官方文档。

Http://linked.earth/PyleoTutorials/notebooks/L2_wavelet_analysis.html
https://ww2.mathworks.cn/help/wavelet/ug/compare-time-frequency-content-in-signals-with-wavelet-coherence.html

来源地址:https://blog.csdn.net/kbasg/article/details/131230687

--结束END--

本文标题: Python 小波分析

本文链接: https://www.lsjlt.com/news/421342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 小波分析
    python 小波分析和小波相干 文章目录 python 小波分析和小波相干写在前面小波分析小波相干小结 写在前面 这个东西单纯为了记录一下用Python做小波分析和小波相干的过程,以...
    99+
    2023-09-29
    python
  • 一、Python时间序列小波分析——实例分析
    小波分析是在Fourier分析基础上发展起来的一种新的时频局部化分析方法。小波分析的基本思想是用一簇小波函数系来表示或逼近某一信号或函数。 小波分析原理涉及到傅里叶变换,并有多种小波变换,有点点小复杂...
    99+
    2023-09-03
    python matlab 开发语言 傅立叶分析
  • Python小波变换去噪的原理解析
    一.小波去噪的原理 信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值...
    99+
    2024-04-02
  • python小波变换去噪
      一,小波去噪原理:  信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值...
    99+
    2023-01-31
    小波 python
  • python之基本形态学滤波实例分析
    本文小编为大家详细介绍“python之基本形态学滤波实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python之基本形态学滤波实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。引言对图像进行形态学变...
    99+
    2023-07-02
  • matlab图像滤波实例分析
    这篇“matlab图像滤波实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“matlab图像滤波实例分析”文章吧。mat...
    99+
    2023-07-05
  • Python光学仿真数值分析求解波动方程绘制波包变化图
    波动方程数值解 波动方程是三大物理方程之一,也就是弦振动方程,其特点是时间与空间均为二阶偏导数。其自由空间解便是我们熟知的三角函数形式,也可以写成自然虚指数形式。 一般来说,既然有了...
    99+
    2024-04-02
  • 如何对时间序列进行小波分析,得出其周期?
    从信号处理角度进行分析 简单的时间序列直接做各种谱分析(频谱,包络谱,平方包络谱,功率谱,倒谱等等) 比如一些简单的旋转机械振动时间序列信号 ​如果频谱不好分析,那可以分析如下图所示的时间序列的时频谱 ​给个简单的模拟信号的例子 t ...
    99+
    2023-09-12
    python 人工智能 开发语言 matlab 深度学习
  • Python人工智能之波士顿房价数据分析
    目录1.数据概览分析1.1 数据概览1.2 数据分析2. 项目总体思路2.1 数据读取2.2 模型预处理(1)数据离群点处理(2)数据归一化处理2.3. 特征工程2.4. 模型选择2...
    99+
    2024-04-02
  • python小白的实例分析
    本文小编为大家详细介绍“python小白的实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python小白的实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、超市买薯片# 用户输入薯片的...
    99+
    2023-06-27
  • Python小波变换去噪怎么使用
    本篇内容介绍了“Python小波变换去噪怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.小波去噪的原理信号产生的小波系数含有信号的...
    99+
    2023-06-22
  • Python人工智能中波士顿房价数据分析的案例
    这篇文章主要为大家展示了“Python人工智能中波士顿房价数据分析的案例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python人工智能中波士顿房价数据分析的案例”这篇文章吧。1.数据概览分析...
    99+
    2023-06-25
  • Python编写日志分析小脚本
    import re def count_patt(fname, patt):result = {}cpatt = re.compile(patt)fobj = open(fname)for line in fobj:m = cpatt.se...
    99+
    2023-01-31
    脚本 日志 Python
  • java中斐波那契查找的示例分析
    这篇文章给大家分享的是有关java中斐波那契查找的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本教程操作环境:windows7系统、java10版,DELL G3电脑。1.概念是二分查找的一种提升算法,...
    99+
    2023-06-14
  • 【Python】二维离散小波变换(2D-DWT)实现
    文章目录 小波变换程序实现子带数学公式 小波变换 小波变换(Wavelet Transform)是一种数学信号处理技术,用于将信号或图像分解为不同频率的小波成分,从而可以在不同时间尺度上分...
    99+
    2023-10-26
    python 人工智能 小波变换 2D-DWT
  • 用Python的绘图库(matplotlib)绘制小波能量谱
    时间小波能量谱 反映信号的小波能量沿时间轴的分布。 由于小波变换具有等距效应,所以有: 式中 表示信号强度,对于式①在平移因子b方向上进行加权积分 式中 代表时间...
    99+
    2024-04-02
  • Python爱心光波
    系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want...
    99+
    2023-09-04
    python 信息可视化 开发语言
  • Python 实现中值滤波、均值滤波
    Python图形界面实现中值滤波、均值滤波 红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @author: D...
    99+
    2023-01-31
    中值 均值 Python
  • 如何使用pt-stalk分析MySQL的性能波动
    小编给大家分享一下如何使用pt-stalk分析MySQL的性能波动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 简介 ...
    99+
    2024-04-02
  • python中最小二乘法的示例分析
    这篇文章给大家分享的是有关python中最小二乘法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作