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

时间:2015-10-01 13:13:08

标签: matlab

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

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

>> size(data1)

ans =

    10     8    12

>> size(data2)

ans =

    66    74    12

其中第一维指的是经度,第二维指的是纬度,第三维指的是该网格的温度(由经度和纬度值定义的网格)。

鉴于它们具有相同的温度数(即12),在MATLAB中是否可以插入数据,以便data1的尺寸为

>> 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 个答案:

答案 0 :(得分:1)

1)你为原始网格定义了三个变量(lon,lat和1:12),但你没有为目标网格指定第三个变量(你只有lon_needed和lat_needed),所以你最好做:

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

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