1.画三维图
之前画曲面的三维图,运用z=x2+y2 算出z和Z,如果是给出数据的地形则没办法用公式算,为此,引入插值自动造出地形的坐标。
拟合和插值的区别:插值是必须要过点,曲线可以不光滑;拟合则是可以不过点,曲线要光滑。
例如依旧画出z=x2+y2 ,但只给出固定点,插值出Z矩阵。
clc; clear all; x=[-3 -2 -1 0 1 2 3]; y=[-3 -2 -1 0 1 2 3]; z=[18 8 2 0 2 8 18]; xminn=min(x) xmaxx=max(x) yminn=min(y); ymaxx=max(x); zminn=min(z); zmaxx=max(z); [X,Y,Z]=griddata(x,y,z,linspace(xmaxx,xminn)',linspace(yminn,ymaxx),'v4'); %v4是一个插值,理解成自动造出Z矩阵即可,第4第5个需要其中一个转置 surf(X,Y,Z)
再用公式法求Z看看画出的图对比是否相同
clear all; clc; x=-3:0.05:3; y=-3:0.05:3; z=x.^2 + y.^2; [X,Y]=meshgrid(x,y); Z=X.^2 + Y.^2; surf(X,Y,Z);
显然,画出的图形状几乎一样,因为点与点的间距使得图形有些不同,插值有很多种,v4插值适用,就用v4吧,可以尝试其他插值是否得出想要的结果。
2.画四维图
除了长宽高,怎么可能画得出其他维度,往往需要体现地形上的温度、浓度等指标,这类“第四维度”一般用颜色体现出来。
clc %手动导入表中数据后,对x、y、z、r赋值 x=one(:,1); y=one(:,2); z=one(:,3);%高度 r=one(:,11);%浓度 [X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值,造出Z variables=one(:,1:3); F=TriScatteredInterp(variables,r,'linear'); R=F(X,Y,Z); %以上3句,理解为造出R,这个R和前三个东西都有关系,插值用的是linear,此处不能用v4 surf(X,Y,Z,R) title('4D'); colormapeditor %颜色编辑器,颜色较深可调色,嫌麻烦就随便弄1,工具-标准颜色图-hsv
为了体现“第四维度”,一般需要调出颜色条。