如果要画一个三维的曲面,MATLAB是以meshgrid配合与mesh或surf指令来绘图。先要以meshgrid产生在x-y平面 的二维的网格数据,再以一组z轴的数据对应到这个二维的网格,即可画出三维的曲面。以下的例子可说明上 述的绘图过程。
>> x=-7.5:0.5:7.5; y=x; % 先产生x及y二个阵列
>> [X,Y]=meshgrid(x,y); % 再以meshgrid形成二维的网格数据
>> R=sqrt(X.^2+Y.^2)+eps; % 加上eps可避免当R在分母时趋近零时会无法定义
>> Z=sin(R)./R; % 产生z轴的数据
>> mesh(X,Y,Z) % 将z轴的变化值以网格方式画出
>> surf(X,Y,Z) % 将z轴的变化值以曲面方式画出
>> mesh(peaks) % 直接将以定义的peaks函数以网格方式画出
>> title('Mesh plot of peaks')
与三维绘图有关的还有等值线图,相关指令为contour,contour3。contour是将等值线图以二维图表示,其语法有 几个方式。一是contour(Z),contour(Z,n),其中Z是一个二维矩阵,而 n为等值线的数目(如果不给即以自动方式 设定)。另一种语法则是将z轴的值对应到指定的x,y轴的值,语法为contour(X,Y,Z),contour(X,Y,Z,n),其中X,Y, Z代表x,y,z轴的数据。contour3则是将等值线以三维图表示,其语法与contour类似,只是将对应的关键字contour 改成contour3,其余部份相同。
以下的例子可以比较contour, contour3图示的不同:
>> [X,Y,Z]=peaks; % x,y及z轴的数据由peaks函数定义
>> subplot(2,2,1)
>> contour(Z,20) % 画出peaks的Z轴二维等值线图,20为等值线的数目
>> subplot(2,2,2)
>> contour(X,Y,Z,20) % 画出peaks的二维等值线图,注意x,y轴与上图不同
>> subplot(2,2,3)
>> contour3(Z,20) % 画出peaks的Z轴二维等值线图
>> subplot(2,2,4)
>> contour3(X,Y,Z,20) % 画出peaks的三维等值线图,注意x,y轴与上图不同
联系客服