来自griddata (octave)的NaN值



我生成了一些分散的数据,并希望将它们插值到网格中。我试图绘制凸壳(因为其他用户对问题的描述),但也只得到错误。

R = 2;
r = 7;
alpha_degree = 90;
alpha_rad = alpha_degree*pi/180;
theta = linspace(0,2*pi,100);
phi = linspace(0,pi,100);
[Phi,Theta] = meshgrid(phi,theta); 
x = r.*sin(Theta);
y = (R+r.*cos(Theta)).*cos(Phi);
z = (R+r.*cos(Theta)).*sin(Phi);
z(z<0) = NaN;

x_rot = x.*cos(alpha_rad) - y.*sin(alpha_rad);
y_rot = y.*cos(alpha_rad) + x.*sin(alpha_rad);
z_rot = z;

[xx,yy] = meshgrid(linspace(-5,5));
zz = griddata(x_rot,y_rot,z_rot,xx,yy);

抱歉,这里有更多的细节:我想要有一个环面的上限,因此我必须将负值设置为NaN, z(z<0)=NaN。旋转后的值是预期的,我有一个旋转的帽子。但是当我使用griddata插值到一个规则的网格时,几乎每个点都被设置为NaN(只有几个点在角落里)。

我不明白为什么用griddata有那么多值被设置为NaN。

(因为我是新来的,所以不能发布图片,抱歉)

我不确定你在期待什么:使用z(z<0) = NaN,你将大约一半的条目设置为NaN,并且在您再次使用gridddata进行旋转和重新采样后,大约一半的条目是NaN,因为它们应该是!

最新更新