【发布时间】:2015-10-02 19:16:11
【问题描述】:
我有一些气候数据集,一个具有 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);
但这会返回错误。我仍在尝试一些事情以使其发挥作用,但是朝着正确的方向前进会很棒。
【问题讨论】:
-
你看过Interpolating Gridded Data的文档吗?
-
你有没有尝试过? interpn 对于初学者...
-
这个区域的经纬度有多大?如果区域太大,线性插值可能效果不佳。如果没有,请参阅@Dan 评论
-
我在我的 OP 中添加了一个示例。
标签: matlab