gpt4 book ai didi

关于边缘 NaN 的 Matlab "interp2"问题

转载 作者:行者123 更新时间:2023-12-01 08:01:28 24 4
gpt4 key购买 nike

我有点卡在一个简单的练习上,希望得到一些帮助。

我正在尝试使用 Matlab 中的“interp2”函数对维度 [15x12] 的变量“tmin”进行一些简单的二维插值:

lat = 15:1.5:32;
lon = 70:1.5:92;

lat_interp = 15:1:32;
lon_interp = 70:1:92;

[X,Y] = meshgrid(lat,lon);
[Xi,Yi] = meshgrid(lat_interp,lon_interp);

tmin_interp = zeros(length(lon_interp),length(lat_interp),Num_Days);
tmin_interp(:,:) = interp2(X,Y,tmin(:,:),Xi,Yi,'linear');

此代码导致 tmin_interp 的最后一行和最后一列为 NaN,即:

tmin_interp(23,1:18) ==> NaN
tmin_interp(1:23,18) ==> NaN

有谁知道我可能做错了什么?我在插值设置方面犯了一个简单的错误吗?感谢您的宝贵时间。

最佳答案

它们是 nan 的原因s 是您的网格前后没有数据可以插值。线性插值使用 Xi,Yi 处的场梯度, 以估计该点的值。如果两边什么都没有,它就不能。

您可以使用 extrapvalX,Y 之外外推的参数你指定。只需添加参数 0'linear' 之后:

interp2(X,Y,tmin(:,:),Xi,Yi,'linear', 0);

这将为“边缘”的点置零。但是,对于外部点,它们可能会下降到某个默认值,例如零。为此,您可以在 tmin 前后添加零。 :

tmin_padded = [  zeros(1,size(tmin,2)+2)
zeros(size(tmin,1),1) tmin zeros(size(tmin,1),1)
zeros(1,size(tmin,2)+2) ];

(还没有检查这个,但你明白了。)你还需要向 X 添加一些前值和后值。和 Y .

如果是 tmin 的“外部”或“默认”值,则使用其他值。

PS 你为什么要创建 tmin_interp作为 3 维?

关于关于边缘 NaN 的 Matlab "interp2"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7477922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com