matlab中使用plot画图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 二维平面图形
5.1.1 基本图形函数
plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制
曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,
当x 为m× n 矩阵时,就由n 条曲线。
(2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
(3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘制多条曲线。
例5.1.1 画出一条正弦曲线和一条余弦曲线。
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
plot(x,y1,'k-.o',x,y2,'k*:')
grid on (/off) 给当前图形标记添加(取消)网络xlable(‘string’) 标记横坐标
ylabel(‘string’) 标记纵坐标
title(‘string’) 给图形添加标题
text(x,y,’string’) 在图形的任意位置增加说明性文本信息gtext(‘string’) 利用鼠标添加说明性文本信息
axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
>> grid on
>> xlabel('independent variable X')
>> ylabel('Dependent Variable Y1 & Y2')
>> title('Sine and Cosine Curve')
>> text(1.5,0.3,'cos(x)')
>> gtext('sin(x)')
>> axis([0 2*pi -0.9 0.9])
5.1.3 图形的比较显示
在一般默认的情况下,MATLAB 每次使用plot 函数进行图形绘制,将重新产生一个图形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。一般来说有两种方法:
一是采用hold on(/off)命令,将新产生的图形曲线叠加到已有的图形上;
二是采用subplot(m,n,k)函数,将图形窗口分隔成n m×个子图,并选择第k 个子图作为当前图形,然后在同一个视图窗口中画出多个小图形。
(1)子窗口的序号按行由上往下,按列从左向右编号。
(2)如果不用指令clf 清除,以后图形将被绘制在子图形窗口中。
例5.1.3 在同一窗口中绘制线段。(见图5.1.5)
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> y3=x;
>> y4=log(x);
>> plot(x,y1,x,y2)
>> hold on
>> plot(x,y3)
>> plot(x,y4)
>> hold off
例5.1.4 在多个窗口中绘制图形。(见图5.1.6)
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> y3=exp(x);
>> y4=log(x);
>> subplot(2,2,1);
>> plot(x,y1);
>> subplot(2,2,2);
>> plot(x,y2);
>> subplot(2,2,3);
>> plot(x,y3);
>> subplot(2,2,4);
>> plot(x,y4);
5.2 三维立体图形
5.2.1 三维曲线图
与二维图形相对应,MATLAB 提供了plot3 函数,可以在三维空间中绘制三维曲线,
它的格式类似于plot,不过多了z 方向的数据。plot3 的调用格式为:
plot3(x1,y1,z1,x2,y2,z2,...)
其中x1,y1,z1,x2,y2,z2,…等分别为维数相同的向量,分别存储着曲线的三个坐标值,该
函数
的使用方式和plot 类似,也可以采用多种的颜色或线型(见表5.1.1)来区分不同的数据
组,
只需在每组变量后面加上相关字符串即可实现该功能。
例5.2.1 绘制方程x=t
y=sin(t)
z=cos(t)
在t=[0,2*pi]上
的空间方程。(见图5.2.1)
>> clf
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot3(y1,y2,x,'m:p')
>> grid on
>> xlabel('Dependent Variable Y1')
>> ylabel('Dependent Variable Y2')
>> zlabel('Independent Variable X')
>> title('Sine and Cosine Curve')
图5.2.1 函数plot 绘制的三维曲线图
- 7 -
5.2.2 三维曲面图
如果要画一个三维的曲面,可以使用mesh(X,Y,Z)或surf(X,Y,Z)函数来实现。mesh 函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。surf
函数和mesh 的用法类似,但它可以画出着色表面图,图形中的每一个已知点与其相邻点以
平面连接。
为方便测试立体绘图,MATLAB 提供了一个peaks 函数,它可以产生一个的高
斯分布矩阵,其生成方程是
N N ×
z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-1/3*e x
p(-(x+1).^2-y.^2)
对应的图形是一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。下面使用peaks 函数来比较一下mesh 和surf 的区别。
例5.2.2 分别用mesh 函数和surf 函数绘制高斯矩阵的曲面。
>> z=peaks(40);
>> mesh(z);
>> surf(z);
图5.2.2 mesh 函数绘制的三维曲面图
- 8 -
图5.2.3 surf 函数绘制的着色表面图
在曲面绘图中,另一个常用的函数是meshgrid 函数,其一般引用格式是:[X, Y]=meshgrid (x, y)
其中x 和y 是向量,通过meshgrid 函数就可将x 和y 指定的区域转换成为矩阵X 和Y。
这样我们在绘图时就可以先用meshgrid 函数产生在x-y 平面上的二维的网格数据,再以一
组z 轴的数据对应到这个二维的网格,即可画出三维的曲面。