在MATLAB中插值网格化气候数据

在MATLAB中插值网格化气候数据,matlab,Matlab,我有一些气候数据集,一个空间分辨率为0.05度,另一个空间分辨率为0.75度。我想插值第二个数据集,使其与第一个数据位于同一网格空间,即0.05度 因此,我的数据集具有以下维度: >> size(data1) ans = 10 8 12 >> size(data2) ans = 66 74 12 其中,第一个维度是指经度,第二个维度是指纬度,第三个维度是指该栅格(由经度和纬度值定义的栅格)处的温度 假设它们具有相同数量

我有一些气候数据集,一个空间分辨率为0.05度,另一个空间分辨率为0.75度。我想插值第二个数据集,使其与第一个数据位于同一网格空间,即0.05度

因此,我的数据集具有以下维度:

>> size(data1)

ans =

    10     8    12

>> size(data2)

ans =

    66    74    12
其中,第一个维度是指经度,第二个维度是指纬度,第三个维度是指该栅格(由经度和纬度值定义的栅格)处的温度

假设它们具有相同数量的温度(即12),那么在MATLAB中是否可以插值数据,以使数据1的维数为

>> size(new_data2)

ans =

    66    74    12
这在matlab中是可能的吗

我这样做的原因是我试图比较两个数据集,它们是在不同大小的网格上生成的,因此我首先需要将它们转换为相同的网格

任何建议都将不胜感激

例如:

b = rand(5,7,12);
lon = 30:0.75:33;
lat = 50:0.75:55;

lon_needed = 30:0.05:33;
lat_needed = 50:0.05:52;
我想b是线性关联的,它的维数等于

(length(lon_needed),length(lat_needed),12)
我试过:

Vq = interpn(lon,lat,1:12,b,lon_needed,lat_needed,'linear',-1);
但这会返回一个错误。我仍在尝试一些方法使其工作,但朝着正确的方向推动将是非常好的。

1)您为原始网格定义了三个变量(lon、lat和1:12),但您没有为目标网格指定第三个变量(您只需要lon_和lat_),因此您最好:

Vq = interpn(lon',lat',(1:12)',b,lon_needed',lat_needed',(1:12)','linear',-1);

2) 你的经纬度范围会很宽吗?这可能会影响线性插值的精度(地球是一个球体)。

您有没有看过文档?您尝试过什么?首先,就经度和纬度而言,这个地区有多大?如果面积太大,线性插值可能无法很好地工作。如果没有,请参见@Dan commentI。我已在我的OP中添加了一个示例。使用我在OP中显示的确切示例,我使用GridDedInterplant/subsref获得错误。输入数据的大小不一致。interpn(第178行)中的错误Vq=F(Xq{:});不,这里的数据范围不会太宽,但很高兴知道,以备将来参考。输入变量需要转置,然后就可以工作了