在matlab中插入插值数据

时间:2012-10-30 12:25:11

标签: matlab interpolation surf

  

可能重复:
  How do I make a surf plot in MATLAB with irregularly spaced data?

我有这样的数据:

data = [
x1 y1 z1
x2 y2 z2
...
xn yn zn
];

我需要获得这些数据的表面。第三行,z - 将是表面的高度。但是Xs和Ys不是单调的连续数据,所以这不起作用:

[X Y] = meshgrid(data(:,1), data(:,2));
Z = interp2(data(:,1), data(:,2), data(:,3), X, Y);

因为第一行和第二行的数据不是单调的。

更新

TriScatteredInterp可以做到这一点。(谢谢@Rody Oldenhuis)

F = TriScatteredInterp(data(:,1), data(:,2), data(:,3))
ti=1:10:600;
[qx qy] = meshgrid(ti, ti);
qz = F(qx, qy);
mesh(qx, qy, qz);

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找TriScatteredInterp。来自文档:

  

F = TriScatteredInterp(X,V)创建一个适合a的插值   形式V = F(X)的表面到(X,V)中的散射数据。 X是一个   大小为mpts-by-ndim的矩阵,其中mpts是点数和   ndim是点所在空间的维度(ndim为2   或3)。列向量V定义X处的值,其中长度   V等于mpts。

     

F = TriScatteredInterp(X,Y,V)和F = TriScatteredInterp(X,Y,Z,V)   允许在备用列中指定数据点位置   在2-D和3-D工作时的矢量格式。