李旭分享 http://blog.sciencenet.cn/u/lixujeremy 代码与散打爱好者!

博文

MATLAB:气象数据的插补

已有 22723 次阅读 2014-5-13 10:24 |个人分类:Matlab|系统分类:科研笔记| Mete

气象数据往往存在着一定时间的缺失,可能是观测仪器暂时的故障,也可能是人为原因造成的,总之有一段的数据没有,造成下一步的处理与分析的困难。这里讨论4Matlab处理的方法,对应不同的情况各有优缺点,将介绍在下面。

本例以CHESTERTOWN MD US(北纬39.21667°,西经76.06667°,位置见图 0)气象站1894~2010年逐月降水数据为例,缺失1914~1935年数据,部分年份——189418951896189718981900190119061936存在着部分月度数据的缺失,本帖就是讨论这部分年内月数据插补的问题。


图 0

1)拟合

Matlab给出的函数:polyfitpolyval

1894年为例,一次线性拟合各月降水量。如图1所示,一次线性拟合的效果不太好,原始数据在5月和9月两次出现“峰值”,但拟合结果只有一个趋势,相差比较大。

1

以此类推,二次线性拟合如图 2所示,这显然是一个错误的结果。

2

三次线性拟合也是一个错误的结果,如图 3

3

继续试验,3次以上的线性拟合结果也都是错误的。因此,判断本例不适宜采用拟合方法。

2)回归

Matlab函数:regress。(为什么有人会用回归?李春强,杜毅光,李保国. 19652005年河北省降水量变化的小波分析[J]. 地理科学进展,2010,29(11):1340-1344.

还是以1984年为例,自变量只有1列(就是一元),回归的效果不好,回归系数没有常数项,R-squre为负值,F statisticp valueNaN。故此方法也不能满足需求。

3)插值

Matlab函数:interp1,注意这只是内插,需要外插还要添加关键字“extrap”。

1894年为例,线性内插出数据缺失的月数据。如图 4所示,空心圆圈是线性插值的结果。

4

不过插值方法也不是完美的,1900(图 5)和1936年(图 6)数据外插的月数据就出现了负值,这显然是不正确的。

5

6

4)均值

对于部分月降水量的缺失,试采用多年的月降水量平均值进行填充,如图 7所示为1~12月降水量平均值。这个方法的优势是简单易行,但多年的月降水量只用平均值填充,难免对降水情况的年、季变动刻画不足,导致插补的年份降水情况趋同,给趋势分析带来困难。

7

还是回到本帖开始介绍的数据,逐月降水数据覆盖1894~2010年,缺失1914~1935年数据,部分年份——189418951896189718981900190119061936存在着部分月度数据的缺失。综合考虑以上4种方法,考虑各方法的优缺点,以扬长避短为原则,采用插值方法填充1894189518961897189819001906年缺失数据,均值方法填充19001936两年缺失数据,1914~1935年数据采用插值方法得到各年降水量(拟合效果不太好),如图 8红圈处。

8

最终得到1894~2010117年的年降水量。数据及代码附下。

Wavlet.rar





https://wap.sciencenet.cn/blog-1148346-793960.html

上一篇:RS:MetOp-AVHRR
下一篇:MATLAB:小波分析—时间序列的多时间尺度分析
收藏 IP: 202.112.90.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 19:02

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部