可能重复:
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);
答案 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工作时的矢量格式。