当我想绘制x,y坐标的三维曲面及其相应的函数值z(x,y)时,我想基本上增加我的数据点。问题是我的坐标不是单调增加的,所以我不能在Matlab中使用2d插值。
前几行的典型x,y,z组合可能看起来像:
15 15 184700.882736683
15 30 215486.921407234
15 45 205691.389050234
15 60 215486.897031495
15 75 209662.528668203
15 90 215486.908134438
15 105 211342.684211922
15 120 215486.920131923
15 135 212270.488286479
15 150 215486.917843900
30 30 275146.369280109
30 45 262639.083693416
30 60 275146.334615114
30 75 267709.604291106
30 90 275146.361678640
30 105 269854.818605481
30 120 275146.331709932
30 135 271039.490475350
30 150 275146.317264820
30 15 235837.965849192
事实上,我可以绘制它们的散点图,或者使用网格绘制它们的三维表面,但由于我的数据值很少,而且我知道它们之间没有值的跳跃,我只想通过插值增加数据点的数量,使我的三维表面看起来更细而不是太粗糙。
我已经阅读了1、2、3和4,但它们都不是专门针对我的问题的解决方案,因为我的案例是三维的。
请不要将我的问题标记为重复和复印;通过谷歌搜索标题。谢谢
由于数据分散,因此需要使用griddata
或scatteredInterpolant
为给定的x
和y
插值z
。
下面是一个使用griddata
的简单示例。
% Sample at 1000 evenly spaced points over the x / y plane.
[xq, yq] = meshgrid(linspace(min(x), max(x), 1000), ...
linspace(min(y), max(y), 1000));
zq = griddata(x, y, z, xq, yq);
surf(xq, yq, zq)
% Plot the original points as reference
hold on
plot3(x, y, z, 'o')