python 对海洋、气象数据进行滤波--带通滤波处理

简介: 如何使用python对其海洋、气象数据进行带通滤波处理,得到我们想要的信号呢?

如何使用python对其海洋、气象数据进行带通滤波处理,得到我们想要的信号呢?



这里以scipy.signal.butter滤波器为例,如何对于气象海洋数据做带通滤波处理进行简单讲解,库的官方说明文档链接如下:

butter滤波器


主要实现过程如下所示:

b,a=scipy.signal.butter(N, Wn, btype='band', analog=False, output='ba', fs=None)
filter_result=signal.filtfilt(b, a, data)


里面主要需要关注的为:

  • N:滤波器阶数
  • Wn:频率 (这里我理解的就是你要滤出的时间天数)
  • btype:滤波器类型,lowpass,  highpass, bandpass, bandstop分别为高通,低通,带通、带阻,默认为低通


构造滤波器并传入相应参数后,一般会返回两个变量:a(分母系数)、b(分子系数),之后通过函数signal.filtfilt(),传入相应变量、数据,就可以得到滤波后的数据了。


对于阶数N来说,我的理解是一般不用设置太高,太高的话可能会滤掉过多的信号,我这里一般使用阶数:3、4


以上就是关于滤波的实现原理,下面主要讲解一下关于带通滤波的频率的理解,因为发现大部分的教程示例不适用于海洋、气象数据滤波的处理,没那么通俗易懂。


举个带通滤波的例子



假如想要通过滤波得到天气尺度3-10天的信号,这儿肯定需要做带通滤波了,那么如何计算Wn呢?


首先,先明白Wn的计算公式,通过官网说明可以得到:

Wn=2*截止频率/采样频率


频率是什么呢,其实很简单,频率=1/周期,可以理解为就是我们数据周期的倒数。

因为天气尺度的范围为3-10天,我们默认周期的单位为:1天,以下基于周期为1天的前提进行计算:


相对于周期为一天来说,


  • 假如你的数据是daily的,一天就一个,那么你的数据周期就是1,采样频率就等于1/1=1,还是1
  • 假如你的数据是一天四个时次的,那么一个数据的周期就是0.25,那么采样频率就是1/0.25=4


截止频率是什么呢?与上面采样频率道理类似,还是以相对于周期为一天来说:

3天的截止频率就是1/3,10天的截止频率就是1/10

所以对于3-10天的带通滤波,如果数据基于周期为一天的话,Wn=[2/10,2/3]

如果是30-60天的带通滤波,Wn=[2/60,2/30]


注意:对于数字滤波器,如果没有指定 fs,则将 Wn 单位标准化为0到1,所以检验我们算的Wn有没有错误,可以看他的范围是否符合要求。

这样下面的处理就比较简单了,传入需要滤波的数据即可了:


b, a = signal.butter(3, [2/10,2/3], 'bandpass',axis=time那一维)
filter_data = signal.filtfilt(b, a, origin_data)


低通和高通滤波比较简单这里就不再阐述了

以上是对于python对于海洋、气象数据进行带通滤波处理时的一些简单理解,水平有限,欢迎交流!


                      一个努力学习python的海气人
                      水平有限,欢迎指正!!!
                        欢迎评论、收藏、点赞、转发、关注。
                        关注我不后悔,记录学习进步的过程~~


目录
打赏
0
0
0
0
8
分享
相关文章
1688商品详情API实战:Python调用全流程与数据解析技巧
本文介绍了1688电商平台的商品详情API接口,助力电商从业者高效获取商品信息。接口可返回商品基础属性、价格体系、库存状态、图片描述及商家详情等多维度数据,支持全球化语言设置。通过Python示例代码展示了如何调用该接口,帮助用户快速上手,适用于选品分析、市场研究等场景。
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
122 4
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
在Python中对数据点进行标签化
本文介绍了如何在Python中使用Matplotlib和Seaborn对数据点进行标签化,提升数据可视化的信息量与可读性。通过散点图示例,展示了添加数据点标签的具体方法。标签化在标识数据点、分类数据可视化及趋势分析中具有重要作用。文章强调了根据需求选择合适工具,并保持图表清晰美观的重要性。
62 15
1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)
1688商品列表API是阿里巴巴开放平台提供的服务,允许开发者通过API获取1688平台的商品信息(标题、价格、销量等)。适用于电商选品、比价工具、供应链管理等场景。使用时需构造请求URL,携带参数(如q、start_price、end_price等),发送HTTP请求并解析返回的JSON/XML数据。示例代码展示了如何用Python调用该API获取商品列表。
134 18
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
142 4
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
89 14

推荐镜像

更多
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问