MATLAB中的三维图形等值线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seamanj/article/details/35781241

在军事、地理等学科中,经常会到等值线。在MATLAB中有许多绘制等值线的命令。

1.contour3命令

contour3是三维绘图中最常用的绘制等值线的命令,利用该命令可生成一个定义在矩形格栅上曲面的三维等值线图,它的使用格式如下:


调用格式                                         说明

contour3(Z)                           画出三维空间角度观看矩阵Z的等值线图,其中Z的元素被认为是距离x-y平面的高度,矩阵Z至少为2*2阶。自动选择等值线的条数与取值。

                                               若[m,n] = size(Z),则x轴的范围为[1,n],y轴的范围为[1,m]

contour3(Z,n)                        画出由矩阵Z确定的n条等值线的三维图

contour3(Z,v)                        在参量v指定的高度上画出三维等高线,当然等值线条数与向量v的维数相同;若想只画一条高度为h的等值线,则输入:contour3(Z,[h,h])


contour3(X,Y,Z)                    用X与Y定义x轴与y轴的范围。若X为矩阵,则X(1,:)定义x轴的范围;若Y为矩阵,则Y(:,1)定义y轴的范围;若X与Y同时为谈不来,则它们必须

contour3(X,Y,Z,n)                 同型;若X或Y有不规则的间距,contour3还是使用规则的间隔计算等值线,然后将数据转变给X或Y

contour3(X,Y,Z,v)                 


contour3(...,s)                       用参量s指定的线型与颜色画等值线

[C,h] = contour3(...)              画出图形,同时返回与命令contourc中相同的等值线矩阵C,包含所有图形对象的句柄向量h


例:绘制山峰函数peaks的等值线图。

>> close all
>> [x,y,z] = peaks(30);
>> contour3(x,y,z)
>> title('山峰函数等值线图')
>> xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis')

>> 


2.contour命令

contour3的二维图就等价于contour,后者用来绘制二维等值线,可以看作是一个三维曲面向xoy平面的投影,它的使用格式


调用格式                                                                    说明 

contour(Z)                                                         把矩阵Z中的值作为一个二维函数的值,等值线是一个平面的曲线,平面的高度v是MATLAB自动取的

contour(X,Y,Z)                                                   (x,y)是平面Z = 0上点的坐标矩阵,Z为相应点的高度值矩阵

contour(Z,n)                                                      画出n条等值线

contour(X,Y,Z,n)                                               画出n条等值线

contour(Z,v)                                                       在指定的高度v上画出等值线

contour(X,Y,Z,v)                                                 等价于contour(Z,v)命令

[C,h] = contour(...)                                             返回等值线矩阵C和线句柄或块句柄列向量h,每条线对应一个句柄,句柄中的userdata属性包含每条等值线的高度值

contour(...,'linespec')                                        用指定的颜色或者线型画等值线


例:画出曲面在[-2π,2π]*[-2π,2π]的图像及其在xoy面的等值线图。


>> close all
>> x = linspace(-2*pi, 2*pi, 100);
>> y = x;
>> [X,Y] = meshgrid(x,y);
>> Z = X.*exp(-cos(X)-sin(Y));
>> subplot(1,2,1)
>> surf(X,Y,Z)
>> title('曲面图像')
>> subplot(1,2,2)
>> contour(X,Y,Z)
>> title('二维等值线图')
>> 



3.contourf命令

此命令用来填充二维等值线图,即先画出不同等值线,然后将相邻的等值线之间用同一颜色进行填充,填充用的颜色决定于当前的色图颜色。

contourf的使用格式如下:

调用格式                                                            说明

contourf(Z)                                                    矩阵Z的等值线图,其中Z理解成为距平面的高度。Z至少为2*2阶的,等值线的条数与取值是自动选择的

contourf(Z,n)                                                 画出矩阵Z的n条高度不同的等值线

contourf(Z,v)                                                 画出矩阵Z的由v指定的高度的等值线图

contourf(X,Y,Z)                                             画出矩阵Z的等值线图,其中X与Y用于指定x轴与y轴的范围,若X与Y为矩阵,则必须与Z同型;若X或Y有不规则的间距,contour3

                                                                       还是使用规则的间距计算等高线,然后将数据转变给X或Y

contourf(X,Y,Z,n)                                         画出矩阵Z的n条高度不同的等值线,其中X、Y参数同上

contourf(X,Y,Z,v)                                         画出矩阵Z的由v指定的高度的等值线图,其中X、Y参数同上

[C,h,CF] = contour(...)                                画出图形,同时返回与命令contourc中相同的等高线矩阵C,C也可被命令clabel使用;返回包含patch图形对象的句柄向量h;返回一用                                                                           于填充用的矩阵CF

例:画出山峰函数peaks的二维等值线图。

>> close all
>> Z = peaks;
>> [C,h] = contourf(Z,10);
>> 


加一句灰度图后

>> colormap gray



4.contourc命令

该命令计算等值线矩阵C,该矩阵可用于命令contour、contour3和contourf等。矩阵Z中的数值用于确定平面上的等值线高度值,等值线的计算结果为由矩阵Z维数决定的间隔的宽度。

contourc命令的使用格式如下:

调用格式                                                           说明

C = contourc(Z)                                       从矩阵Z中计算等值矩阵,其中Z的维数至少为2*2阶,等值线为矩阵Z中数值相等的单元,等值线的数目和相应的高度值是自动选择的

C = contourc(Z,n)                                   在矩阵Z中计算出n个高度的等值线

C = contourc(Z,v)                                    在矩阵Z中计算出给定高度向量v上的等值线,而向量v的维数决定了等值线的数目,若只要计算一条高度为a的等值线,输入:

                                   contourc(Z,[a,a])

C = contourc(X,Y,Z)                                在矩阵Z中参量X、Y确定的坐标轴范围内计算等值线

C = contour(X,Y,Z,n)                               从矩阵Z中参量X、Y确定的坐标范围内画出n条等值线

C = contour(X,Y,Z,v)                                从矩阵Z中参量X、Y确定的坐标范围内,画在v指定的高度上指定的等值线


5.clabel命令

clabel命令用来在二维等值线图中添加高度标签,它的使用格式如下:

调用格式                                                            说明

clabel(C,h)                                                  把标签旋转到恰当的角度,再插入到等值线中。只有等值线之间有足够的空间时才加入,这决定于等值线的尺度。其中C为高度矩阵

clabel(C,h,v)                                               在指定的高度v上显示标签

clabel(C,h,'manual')                                  手动设置标签。用户用鼠标左键或空格键在最接近指定的位置上放置标签,用键盘上的Enter键结束该操作

clabel(C)                                                      在从命令contour生成的等高矩阵C的位置上添加标签。此时标签的放置位置是随机的

clabel(C,v)                                                   在给定的位置v上显示标签

clabel(C,'manual')                                      允许用户通过鼠标来给等高线贴标签


对上面的使用格式,需要说明的一点是,若命令中有h,则会标签进行恰当的旋转;否则标签会竖直放置,且在恰当的位置显示一个“+”

例:绘制具有5个等值线的山峰函数peaks,然后对各个等值线进行标注,并给所画的图加上标题。

>> close all
>> Z = peaks;
>> [C,h] = contour(Z,5);
>> clabel(C,h)
>> title('等值线的标注')
>> 


6.ezcontour命令

该命令专门用来绘制符号函数f(x,y)的等值线图,它的使用格式如下:

调用格式                                                说明

ezcontour(f)                                   绘制f在系统默认的区域(-2π,2π)*(-2π,2π)上的等值线图

ezcontour(f,[a,b])                          绘制f在区域(a,b)*(a,b)上的等值线图

ezcontour(f,[a,b,c,d])                   绘制f在区域(a,b)*(c,d)上的等值线图

ezcontour(...,n)                              绘制f在系统默认的区域(-2π,2π)*(-2π,2π)上的等值线图,其中网格数为n*n,n的默认值为60


例:画出下面函数的等值线图。


>> close all
>> syms x y
>> f = sin(x^2 + y^2)/(x^2 + y^2);
>> ezcontour(f,[-pi,pi],30)
>> title('符号函数等值线图')
>> 

7.ezsurfc命令

该命令用来绘制函数f(x,y)的带等值线的三维表面图,其中函数f是一个以字符串形式给出的二元函数.


ezsurf命令的使用格式如下:

调用格式                                                                           说明

ezsurfc(f)                                                                   绘制f在系统默认的范围(-2π,2π)*(-2π,2π)上带等值线的三维表面图

ezsurfc(f,[a,b])                                                          绘制f在区域(a,b)*(a,b)上带等值线的三维表面图

ezsurfc(f,[a,b,c,d])                                                    绘制在区域(a,b)*(c,d)上带等值线的三维表面图

ezsurfc(X,Y,Z)                                                           绘制参数曲面x = x(s,t), y = y(s,t), z = z(s,t)在系数默认的区域(-2π,2π)*(-2π,2π)上带等值线的三维表面图

ezsurfc(X,Y,Z,[a,b])                                                   绘制上述参数曲面在(a,b)*(a,b)上的带等值线的三维表面图

ezsurfc(X,Y,Z,[a,b,c,d])                                            绘制上述参数曲面在(a,b)*(c,d)上的带等值线的三维表面图

ezsurfc(...,n)                                                              绘制f在系统默认的区域(-2π,2π)*(-2π,2π)上带等值线的三维表面图,其中网格数为n*n,n的默认值为60

ezsurfc(...,'circ')                                                         在区域的中心圆盘上绘制f的带等值线的三维表面图


例:在区域[-π,π]*[-π,π]上绘制下面函数的带等值线的三维表面图。


>> close all
>> syms x y 
>> f = exp(sin(x+y))/(x^2+y^2);
>> subplot(1,2,1)
>> ezsurfc(f,[-pi,pi])
>> title('网格数为60*60的表面图')
>> subplot(1,2,2)
>> ezsurfc(f,[-pi,pi],20)
>> title('网格数为20*20的表面图')
>> 




没有更多推荐了,返回首页