栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python实现matlab中interp2方法(有误差(小数点后第5位))

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python实现matlab中interp2方法(有误差(小数点后第5位))

在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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号