在matlab中的interp2方法
lat = ds1.data('lat')'; % 1x451 90:-0.4:-90
lon = ds1.data('lon')'-360; % 1x900 -180:0.4:179.6
%% 插值,从0.4度分辨率插值到0.125度
% 转换后
%lat 90:-0.125:-90 1x1441
%lon 0:0.125:359.875 1x2880
%U: 2880x1441 lon x lat
lat1 = 90:-0.125:-90; %1x1441
lon1 = 0:0.125:359.875; %1x2880
[LAT,LON] = meshgrid(lat,lon);
[LAT1,LON1] = meshgrid(lat1,lon1);
U1 = interp2(LAT,LON,U,LAT1,LON1); %lon x lat 2880x1441
如图:
在pyhon中实现
import numpy as np
from scipy import interpolate
#将矩阵的行进行倒叙
def invert(list1):
return np.squeeze([row[::-1] for row in list1])
#示例
def test
U = []#矩阵
lat = np.transpose(ds['lat'].data)# 1x451 90:-0.4:-90
lon = np.transpose(ds['lon'].data) # 1x900 -180:0.4:179.6
lat1 = np.arange(90, - 90 + - 0.125, - 0.125)
lon1 = np.arange(0, 359.875 + 0.125, 0.125)
#lat、lon、lat1、lon1在interp2d方法下实现插值,但是行的顺序是颠倒的
f = interpolate.interp2d(lat, lon, U)
U1 = f(lat1, lon1)
#将矩阵行中数据颠倒过来,就得到和matlab中和interp2d保持一致的数据了
re= invert(U1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)