如果我们在绘制的二维图形上添加该位置的高度,类似于地图上的等高线,就相当于用二维图形绘制出了三维的结果
close all
[X,Y] = meshgrid(-8:0.5:8);
R = sqrt(X.^2+Y.^2)+eps;
Z = sin(R)./R;
[C,h]=contour(X,Y,Z);
colormap gray
colorbar
set(h,'ShowText','on','TextStep',get(h,'LevelStep'))
结果:
上述代码中,我们用到了contour函数来绘制等高线图
首先对这个函数进行一个介绍:
这个函数创建一个包含矩阵 Z 的等值线的等高线图,其中 Z 包含 x-y 平面上的高度值。
MATLAB 会自动选择要显示的等高线。Z 的列和行索引分别是平面中的 x 和 y 坐标。
返回值中的C表示等值线矩阵,也就是绘制等高线需要用到的坐标。
返回值中的h为图形对象的句柄向量,也就是代表所绘制图形。
完成这一步后,我们还要面对等高线标注的问题,
如果标注的过密,会出现文字重叠,如果过于稀疏,图像的物理意义 不方便阅读。
通过set函数来完成这一步标签的设置:
'ShowText':显示等高值标签命令,设置'on',打开显示标签;
'TextStep':表示我们接下来要设置标签的步长;
get(h,'LevelStep'):'LevelStep'的含义是等高线步长,我们得到等高线步长的值,并将它作为参数传递给set函数,表示设置标签的步长等于等高线的步长
可以看到图上的标签还是比较密集的,如果我们设置标签的步长是等高线的两倍:
figure
[C,h]=contour(X,Y,Z);
colormap gray
colorbar
set(h,'ShowText','on','TextStep',2*get(h,'LevelStep'))
可以得到以下结果 :
参考《高等光学仿真——光波导、激光》