MATLAB等值线绘制

基本等值线的绘制

contour(x,y,z)与contour(z)

作平面等值线,x,y,z为确定三维曲面点的矩阵。MATLAB自选等值线的高度和条数。两者区别是,contour(x,y,z)限定了等高线的横纵坐标值而contour(z)没有限定。下面以contour(x,y,z)为例,说明其他功能。

contour(x,y,z,n)与contour(x,y,z,v)

contour(x,y,z,n)是指定画出n条等值线,而等值线的值由MATLAB自动确定。contour(x,y,z,v)是指定画出v中高度的等值线。n是一个数而v是一个行向量。如果只想画高度为1的等值线,v要写成[1 1],如果只写一个1,会被当成只画一条等值线。

contour(x,y,z,‘ShowText’,‘on’)

标记等值线的高度,标记的位置由MATLAB自动确定。
以上即是contour可带的基本参数值。

实验实例:

[x,y,z]=peaks(30);

subplot(2,3,1);
surf(x,y,z);
title('原图');

subplot(2,3,2);
contour(x,y,z);
title('contour(x,y,z)');

subplot(2,3,3);
contour(z);
title('contour(z)');

subplot(2,3,4);
contour(x,y,z,'ShowText','on');
title('ShowText on');

subplot(2,3,5);
contour(x,y,z,2,'ShowText','on');
title('contour(x,y,z,2)');

subplot(2,3,6);
contour(x,y,z,[2 2],'ShowText','on');
title('contour(x,y,z,[2 2])');

在这里插入图片描述

特殊功能

更多标记等高线方法——clabel

clabel函数可以更灵活地标记等高线。在创建等高线的时候要创建出等值矩阵C和句柄向量h,即[C,h]=contour(…)然后就可以用clabel标记了。顺便提一句,我们可以双击界面右侧的h查看句柄属性并修改。在这里插入图片描述

clabel(C,h)

与‘ShowText’ ‘on’作用相同,后面可以添加其他修饰参数,如‘Color’等(与plot基本相同)。

clabel(C,h,v)

只标记v所指定的高度的等高线

clabel(C,h,v,‘manual’)

支持鼠标手动标记等高线,可以通过鼠标单击在指定位置标记高度。按键盘的回车键结束。

填充颜色——contourf(…)

在等高线之间填充颜色,参数与contour相同。

三维等高线——contour3

在三维空间画出等高线,参数与contour相同

函数的等高线绘制——ezcontour

以上所讲均是已知平面的离散点矩阵(x,y,z),在我们创建了某平面的符号方程时,可以用ezcontour直接画出等值线。

ezcontour(f,[a b c d],n)

绘制函数 f 的等值线。[a b c d]和n分别限制 f 中参数的取值范围和等值线条数,可缺省。

以下给出实例

figure
subplot(2,2,1);
surf(x,y,z);
title('原图');

subplot(2,2,2);
[C,h]=contour(x,y,z);
clabel(C,h,[2 2],'Color','b');
title('clabel(C,h,[2 2],''Color'',''b'')');

subplot(2,2,3);
contourf(x,y,z);
title('contourf(x,y,z)');

subplot(2,2,4);
contour3(x,y,z,10);
title('contour3(x,y,z,10)');

在这里插入图片描述

带等值线的三维图形

在三维图形中,我们可以在xoy平面上同时显示等值线。主要有四种图,及mesh、surf 与散点绘图、函数绘图的两两组合。

meshc(…)与surfc(…)

参数与mesh、surf相同,只是在xoy平面上显示了等值线。

ezmeshc(…)与ezsurfc(…)

通过函数绘制。如果在m文件中输入,会显示不推荐用这两个函数。

fmesh、fsurf(… ,‘ShowContours’,‘on’)

MATLAB推荐使用fmesh与fsurf,想要在xoy平面显示等值线时,只需在fmesh和fsurf的参数列表后面加上‘ShowContours’,‘on’即可。

给出实例:

figure
subplot(2,2,1);
meshc(x,y,z);
title('meshc(x,y,z)');

subplot(2,2,2);
surfc(x,y,z);
title('surfc(x,y,z)');

syms X Y;
f=Y.*sin(X)-X.*cos(Y);

subplot(2,2,3);
fmesh(f,[-2*pi 2*pi],'ShowContours','on');
title('fmesh ShowContours on');

subplot(2,2,4);
fsurf(f,[-2*pi 2*pi],'ShowContours','on');
title('fsurf ShowText on');

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43575267/article/details/86538711