第四讲 Matlab绘图4.1 二维图形4.2 数据分析图4.3 三维图形4.1 二维图形1、基本图形的绘制plot(x,y) 对向量x绘制向量y。
以x为横坐标,y为纵坐标,按照坐标(xi ,yi)的有序排列绘制曲线。
plot(...,str) 使用字符串str指定的颜色和线型进行绘图。
例1:>> x=-pi:0.02*pi:pi;>> y=sin(x).*x.^2;>> plot(x,y)ezplot(f,xmin,xmax) 绘制函数f在区间[xmin,xmax]上的图形。
如果省略xmin和xmax参数,区间将大概取在-2pi——2pi之间。
由于ezplot命令使用算法来判断该函数变化显著的区间,因此区间的选取是不固定的。
例2:>> ezplot('sin(x).*x.^2')2、图形控制figure(gcf) 显示当前图形窗口。
只键入figure命令则创建新的图形窗口;shg 显示当前图形窗口,等价于figure(gcf)。
hold on 保持当前图形。
允许在当前图形状态下,使用同样的缩放比例加入另一个图形。
hold off 释放图形窗口,这样下一个图形将称为当前图形。
这是缺省状态。
hold 在hold on和hold off之间进行切换。
subplot(m,n,p) 将图形窗口分割成m行n列,并设置p所指定的子窗口为当前窗口。
子窗口按行由左至右,由上至下进行编号。
这一命令在Matlab的当前版本中也被写作subplot(mnp)。
axis…)用行向量中给出的值,设置坐标轴的最大和最小值。
对于二维图形,该向量中含有元素: [xmin, xmax, ymin, ymax]。
对于三维图形,是[xmin, xmax, ymin, ymax,zmin, zmax]。
axis ~~ ~~的不同参数将给出不同的结果:1.manual 固定坐标轴刻度。
如果当前图形窗口为hold on状态,则后面的图形将采用同样的刻度2.auto 把坐标轴刻度重新设置为缺省状态值。
3.equal 设置x轴和y轴为同样的刻度增量。
4.tight 以数据的大小为坐标轴的范围。
5.ij 翻转y轴,使得正数在下,负数在上。
6.xy 复位y轴,使正数在上。
7.off 坐标轴消隐。
8.on 绘制坐标轴。
title(txt) 在图形窗口顶端的中间位置输出字符串txt作为标题。
xlabel(txt) 在x轴下的中间位置输出字符串txt作为标注。
ylabel(txt) 在y轴边上的中间位置输出字符串txt作为标注。
zlabel(txt) 在z轴边上的中间位置输出字符串txt作为标注。
text(x,y,txt) 在图形窗口的(x,y)处写字符串txt。
坐标x和y按照与所绘制图形相同的刻度给出。
对于向量x和y,字符串txt写在(xi,yi)的位置上。
如果t x t是一个字符串向量,即一个字符矩阵,且与x, y有相同的行数,则第i行的字符串将写在图形窗口的(xi,yi)的位置上。
gtext(txt) 通过使用鼠标或方向键,移动图形窗口中的十字光标,让用户将字串t xt放置在图形窗口中。
当十字光标走到所期望的位置时,用户按下任意键或鼠标上的任意按钮,字符串将会写入在窗口中。
legend(str1,str2 , . . .pos)在当前图上输出图例,并用说明性字符串str1,str2等作为标 注。
如果指定参数pos ,则图例将按下面所述放置: -1:将图例框放在坐标轴外的右侧。
0:将图例框放在坐标轴内侧。
1:将图例框放在右上角。
2:将图例框放在左上角。
3:将图例框放在左下角。
4:将图例框放在右下角。
legend off 从当前图形中清除图例。
[x,y]=ginput 从图形窗口中读取坐标值。
在图形窗口中放置一个光标,用户可以通过鼠标或方向键对光标进行定位,并且通过按下鼠标按钮或键盘上任意键,将坐标值传递到M AT L A B 中。
这些坐标值保存在向量x 和y 中。
这一过程直到按下‘回车’键才终止。
-6-4-20246-4-3-2-101234sin(x)/xx-axisy -a x i s>> t=-2*pi:0.02*pi:2*pi; >> x=t+(t==0)*eps; >> y=sin(x)./x; >> plot(x,y,'r') >> title('sin(x)/x') >> xlabel('x-axis') >> ylabel('y-axis') >> text(0,1,'summit') >> hold on >> sy=sin(t); >> cy=cos(t);>> plot(t,sy ,'b',t,cy,'k')>> legend('sin(x)/x','sin(x)','cos(x)')>> axis equal4.2数据分析图[m,y]=hist(x) 在x的最大值和最小值之间等分成10个区间,在这个区间上画出统计频数直方图。
向量y 的元素为将min(x) 和max(x)之间分成10个等间距的值,向量m为在每个区间内值的个数。
[m,y]=hist(x,n) 在n个等间距区间上画统计频数直方图。
>> y=randn(10000,1);>> [n,m]=hist(y,30)n =Columns 1 through 31 2 2Columns 4 through 610 11 23Columns 7 through 941 74 143Columns 10 through 12259 384 505Columns 13 through 15660 870 990Columns 16 through 18989 1010 969Columns 19 through 21899 701 543Columns 22 through 24349 226 144Columns 25 through 2794 52 26Columns 28 through 3010 11 2m =Columns 1 through 4-4.0833 -3.8198 -3.5563 -3.2929Columns 5 through 8-3.0294 -2.7659 -2.5024 -2.2389Columns 9 through 12-1.9754 -1.7119 -1.4484 -1.1850Columns 13 through 16-0.9215 -0.6580 -0.3945 -0.1310Columns 17 through 200.1325 0.3960 0.6594 0.9229Columns 21 through 241.1864 1.4499 1.7134 1.9769Columns 25 through 282.2404 2.5038 2.76733.0308Columns 29 through 303.2943 3.5578>> hist(y,30)-5-4-3-2-101234020040060080010001200bar(x,y) 在由向量x 指定的位置上画y 的条形图。
-15-10-5051015>> x=-10:10; >> y=x.^2;>> bar(x,y)pie(x,explode) 绘制向量x 的饼图。
如果sum(x)< 1,则将给出一个不完全的饼图。
向量explode 与向量x 的维数相同,并且explode 中不为零的元素所对应的相应部分将从饼图中独立出来。
>> subplot(221)>> pie([0.1 0.2 0.3 0.4])>> title('pie([0.1 0.2 0.3 0.4])') >> subplot(222)>> pie([0.1 0.2 0.3 0.3])>> title('pie([0.1 0.2 0.3 0.3])') >> subplot(223) >> pie([1 2 3 3])>> title('pie([1 2 3 3])') >> subplot(224)>> pie([0.1 0.2 0.3 0.3],[0 0 1 0])>> title('pie([0.1 0.2 0.3 0.3],[0 0 1 0])')pie([0.1 0.2 0.3 0.4])pie([0.1 0.2 0.3 0.3])33%pie([1 2 3 3])pie([0.1 0.2 0.3 0.3],[0 0 1 0])4.2三维图形[U,V]=meshgrid(x,y) 用来自向量x 和y 的x 坐标和y 坐标形成网格,并生成矩阵。
长度为n 的向量 x 包含升序排列的x 坐标,而长度为m 的向量y 包含升序排列的y 坐标,分别复制m 和n 次形成两个m ×n 的矩阵U 和V 。
这些矩阵表示整个矩形区域内的x 和y 坐标。
[U,V]=meshgrid(x)等价于[U,V]=meshgrid(x,x)。
>> x=[-1 0 1]; >> y=[1 2 3 4];>> [X,Y]=meshgrid(x,y) X =-1 0 1-1 0 1 -1 0 1 -1 0 1 Y =1 1 12 2 23 3 34 4 4 >> Z=zeros(size(X)); >> mesh(X,Y ,Z) >> colormap([0 0 0])-11plot3(x,y,z) 用(xi,yi,zi)所定义的点绘制图形。
向量x 、y 和z 必须为等长度的。
plot3(x,y,z,str) 使用字符串str 确定的线型和颜色按照上面所述的方法绘制图形。
plot3(x1,y1,z1,str1,x2,y2,z2,str2,...)用字符串str1确定的线型和颜色对x1,y1,z1绘图,用字符串str2确定的线型和颜色对x2,y2,z2绘图...。