基本思路:4列数据,前三列对应x,y,z,第4列为属性列C,但这些离散点不构成规则格网,因此需要先利用TriScatteredInterp插值,再用meshgrid划分格网,最后用Mesh或surf(xx,yy,zz,CC)做出三维表面图(其中C属性值用颜色表示)
代码:(附件里面已经包含了数据和代码,直接运行即可)
load testData.mat;
x=sh(:,1); %第1列
y=sh(:,2); %第2列
z=sh(:,3); %第3列
variables=sh(:,1:3); %前3列自变量
C=sh(:,4); %第4列,因变量
F=TriScatteredInterp(variables,C,'linear'); %散点数据插值
[xx,yy,zz] = meshgrid(linspace(min(x),max(x),20),linspace(min(y),max(y),20),linspace(min(z),max(z),20));
CC = F(xx,yy,zz);
mesh(xx,yy,zz,CC); %画格网
% surf(xx,yy,zz,CC); %画表面
hold on
plot3(x,y,z,'*')
xlabel('x')
ylabel('y')
zlabel('z')
结果-总是提示以下错误:
>> Graphic4D
Warning: Duplicate data points h