R语言怎么定义数学上的周期函数?

Python013

R语言怎么定义数学上的周期函数?,第1张

举个栗子,不知道理解得对不对,假设周期为5:

x <- 1:100

y <- vector()

for (i in x) {

if(i <= 5) y[i] <- f(x[i])#此处f()表示y与x的函数关系式

else y[i] <- y[i-5]

}

主要分析步骤:

加载区域范围

加载区域范围日均数据集ERA5

定义日均温提取分析函数

提取数据

结果可视化

二、python代码

1、分析区域

python代码如下

region_bj = '../boudary/huangtu_plateau.shp'

region = geemap.shp_to_ee(region_bj)

roi = region.geometry()

Map = geemap.Map()

Map.addLayer(ee.Image().paint(roi, 0, 2), {'palette':'darkred'}, 'plateau')

Map.centerObject(roi)

Map

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

2、定义函数、设置属性及数据分析

python代码如下:

######### 1-定义函数 #########

# 计算区域的平均温度,设置属性

def meanTempCal(image):

mt_2m = image.reduceRegion(**{

'reducer':ee.Reducer.mean(),

'geometry':roi,

'bestEffort':True

})

# 转换为摄氏度

mt_cel = ee.Number(mt_2m.get('mean_2m_air_temperature'))\

.subtract(273.15)

# 增加新的属性

return image.set({'mean_air_temp':mt_cel})

######### 2-加载数据集并进行提取分析 #########

# 获取日平均温度,进行相应时间段、区域范围筛选

era5_mt = ee.ImageCollection('ECMWF/ERA5/DAILY') \

.filterDate('2010-01-01', '2020-12-31') \

.filterBounds(roi)

mean_airTemp = era5_mt.map(meanTempCal).aggregate_array('mean_air_temp').getInfo()

dates = era5_mt.reduceColumns(ee.Reducer.toList(), ["system:index"]).get('list').getInfo()

######### 3-结果制图 #########

import matplotlib.pyplot as plt

plt.plot(dates, mean_airTemp)

plt.title('mean daily air temprature')

plt.xlabel('dates')

plt.ylabel('Temprature(℃)')

plt.show()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

结果如下:

在这里插入图片描述

三、小结

通过ERA日均数据集,利用GEE分析了10年来区域日均温度的变化,可以明显看出日均温度的周期性变化特征

下一步可进一步进行数据的分析,比如可利用R语言进行周期性、趋势性特征的统计分析,生成时间序列的变化图