Matlab:插值非单调坐标和函数值组合

时间:2016-07-23 01:08:27

标签: matlab interpolation

当我想绘制x,y坐标的3d表面及其对应的函数值z(x,y)时,我想基本上增加我的数据点。 问题是我的坐标没有单调增加所以我不能在Matlab中使用二维插值。

少数第一行的典型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

实际上我可以绘制它们的散点图,或者使用meshgrid绘制三维表面,但由于我的数据值很少而且我知道它们之间没有值跳跃,我只是想增加通过插值数据点的数量,使我的3D表面看起来更精细而不是太粗糙。

我已经阅读了1234,但是他们没有专门解决我的问题,因为我的案例是3d一。

请不要将我的问题标记为重复和复制;只需谷歌搜索标题。感谢。

1 个答案:

答案 0 :(得分:1)

由于您的数据分散,您需要使用griddatascatteredInterpolant为给定的zx插入y

以下是使用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')