2012-10-30 33 views
0

可能重複:
How do I make a surf plot in MATLAB with irregularly spaced data?Surf在MATLAB插數據

我有這樣的數據:

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

我需要得到這個數據的表面。第三行,z - 將是表面的高度。但X和Y都不單調的連續數據,所以這不起作用:

[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

我認爲你正在尋找TriScatteredInterp。從文檔:

F = TriScatteredInterp(X,V)創建適合的形式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。

+0

是的,謝謝! 'TriScatteredInterp'幫助我完成我的任務 –