[X,Y]=meshgrid(xgv,ygv)
% 函数解释:X和Y是用于接收返回值的变量,是两个大小相等的矩阵
% xgv和ygv是分别用于表示x和y取值范围的行向量,如果省略一个则默认x和y取值范围相同。
% 函数原理:X由xgv复制length(ygv)行得到,Y首先ygv进行转置,再将ygv'复制length(xgv)次得到。
网格图绘制效果:由多个网格拼接构成的图形称为网格图。网格图可以用于二元函数图像的绘制。
1.mesh(X,Y,Z):最基础的使用语法。
% 其中X是n维行向量,Y是m维行向量,Z是m×n的矩阵。
% 函数解释:构造的三维点共有m×n个,每一个三维点的坐标为(X(j),Y(i),Z(i,j)))
% 理解方式:相当于对X和Y向量中相邻的两个元素(对应四个点)绘制一个三维平面,然后再向后挪一个,对下一对相邻元素绘制一个三位平面,最后把绘制的所有三维平面拼接在一起。
% 函数的绘图结果中线条的颜色反映了点的高度。
2.mesh(Z):最基础使用语法的简化形式。
% 其中Z是一个m×n的矩阵。
% 函数解释:省略了X和Y向量,默认X是从1到Z矩阵列数的等差数列向量,Y是从1到Z矩阵行数的等差数列向量。
3.mesh(X,Y,Z):mesh函数最常用的语法形式。
% 其中X和Y和Z都是m×n的矩阵。
% 第一种形式中X和Y分别是m维和n维行向量,系统会自动将X和Y分别重复扩展为m×n的矩阵,变为第三种形式。
% 函数解释:定义了X、Y和Z三个矩阵后相当于得到了一个由三维点坐标构成的矩阵,对坐标点矩阵中所有行列相邻的四个元素绘制一个平面,拼接在一起就构成了最终的网格图。
题目要求:绘制z=x²-y平方的函数图像,其中x和y的取值范围都是[0,10]。
绘制Matlab代码:
X=repmat(linspace(0,10,20),20,1)
Y=repmat(linspace(0,10,20)',1,20);
% 此处X和Y的生成过程可以用meshgrid函数代替:[X,Y]=meshgrid(linspace(0,10,20)
Z=X.*X-Y.*Y;
mesh(X,Y,Z)
绘制效果图:
曲面图绘制效果:
绘制语法:函数名为surf,其语法与进行三维网格图绘制的mesh函数语法完全相同。
等高线绘制效果图:
绘制语法:
1.contour(x,y,z):最基础的等高线绘制
2.contour(x,y,z,n):指定等高线的层数为n,n为正整数
3.contour(x,y,z,heights):指定需要显示的等高线高度,用来代替第二种方法自动生成
% 参数解释:heights是一个用于表示需要显示的高度的向量
4.contour(x,y,z,[height height]):只显示高度为height的等高线
% 参数解释:height为一个整数。
函数解释:在x-y平面上绘制等高线图。
效果优化:
plot3(x,y,z)
t=0:0.01:4*pi;
x=sin(t)+1;
y=cos(t);
z=t;
plot3(x,y,z)
在实际使用中,常常不隐式定义符号,而是通过定义符号变量的方法来显式定义符号,并使用fplot3函数进行绘图。
fplot3(x,y,z,[start,end])
syms 变量名
syms t;
x=sin(t)+1;
y=cos(t);
z=t;
fplot3(x,y,z,[0,4*pi])
fmesh(变量名,[start1,end1,start2,end2])
syms x y;
z=x.*x-y.*y
fmesh(z,[-5,5,-10,10])
函数名=@(变量名1,变量名2,变量名3)函数表达式
fimplicit3(函数名,[start1,end1,start2,end2,start3,end3])
alpha(透明度)
函数解释:用来设置绘图的透明度,用于优化绘图效果。
透明度:一个0-1之间的浮点数(小数)。
xlabel("X轴");ylabel("Y轴");zlabel("Z轴");
axis vid3d;
% 对于含有subplot的图,需要对每一个图都使用才能保证相同的坐标轴效果。
subplot(图行数,图列数,图序号)
% 图的序号是在母图中逐行标号的。
title(标题字符串)
% 通过shading可以设置绘图的色彩模式
shading faceted %默认采用的模式
shading flat %去掉了绘制结果的网格线
shading interp %在flat的基础上实现了色彩的平滑过渡
以修改等高线绘制的线宽为例进行展示:在绘图函数中加上一个参数“LineWidth”并紧接着线宽长度即可。
contour(x,y,z,"LineWidth",2)
colorbar
axis equal;
这样的图形在各个坐标轴的分度值上相差不是太大,更加接近真实图形。
在mesh类函数或fmesh函数的参数表中最后添加("MeshDensity",网格密度)