资源描述:
《第4讲 matlab的绘图功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四讲MATLAB的绘图功能1.二维图形绘制命令MATLAB不但擅长于矩阵相关的数值运算,也适合用在各种科学视图表示(Scientificvisualization)。下面将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y坐标。下例可画出一条正弦曲线:closeall;x=linspace(0,2*pi,100);%100个点的x坐标y=sin(x);%对应的y坐标plot
2、(x,y);小整理:MATLAB基本绘图函数plot:x轴和y轴均为线性刻度(Linearscale)loglog:x轴和y轴均为对数刻度(Logarithmicscale)semilogx:x轴为对数刻度,y轴为线性刻度semilogy:x轴为线性刻度,y轴为对数刻度若要画出多条曲线,只需将坐标对依次放入plot函数即可:plot(x,sin(x),x,cos(x));12若要改变颜色,在坐标对后面加上相关字符串即可:plot(x,sin(x),'c',x,cos(x),'g'); 若要同时改变颜色及图
3、线型态(Linestyle),也是在坐标对后面加上相关字符串即可:plot(x,sin(x),'co',x,cos(x),'g*'); 小整理:plot绘图函数的叁数符号颜色符号颜色符号线型符号标记符号标记‘b’蓝色‘c’青色‘_’实线‘v’Ñ‘x’叉号‘g’绿色‘k’黑色‘__’虚线‘^’D‘+’加号‘m’洋红色‘r’红色‘:’点线‘>’v‘pentagram’五角星☆‘w’白色‘y’黄色‘_.’点划线‘<’w‘diamond’◇‘none’无线‘o’圆圈‘hexagram’六角星‘*’星号‘square
4、’□图形完成后,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0,6,-1.2,1.2]);12 此外,MATLAB也可对图形加上各种注解与处理:xlabel('InputValue');%x轴注解ylabel('FunctionValue');%y轴注解title('TwoTrigonometricFunctions');%图形标题legend('y=sin(x)','y=cos(x)');%图形注解gridon;%显示格线我们可用subplot来同时画出
5、数个小图形于同一个视窗之中:subplot(2,2,1);plot(x,sin(x));subplot(2,2,2);plot(x,cos(x));subplot(2,2,3);plot(x,sinh(x));subplot(2,2,4);plot(x,cosh(x)); MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。小整理:其他各种二维绘图函数bar长条图stairs阶梯图errorbar图形加上误差范围stem针状图fplot较精确的函数图形fill实心图polar极坐标图feat
6、her羽毛图hist累计图compass罗盘图12rose极坐标累计图quiver向量场图以下我们针对每个函数举例。当数据点数量不多时,长条图是很适合的表示方式:closeall;%关闭所有的图形视窗x=1:10;y=rand(size(x));bar(x,y);对于m*n维的矩阵,函数bar绘制得到m组条形图,每组有n个垂直条形图。如4*5维矩阵a,得条形图:a=[12321;23432;34543;45654];bar(a)legend('第一列','第二列','第三列','第四列','第五列',2)g
7、rid如果已知数据的误差量,就可用errorbar来表示。下例以单位标准差来做误差量:x=linspace(0,2*pi,30);y=sin(x);e=std(y)*ones(size(x));errorbar(x,y,e)对于变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:fplot('sin(1/x)',[0.020.2]);%[0.020.2]是绘图范围12 若要产生极坐标图形,可用polar:theta=linspace(0,2*pi);r=cos(4*th
8、eta);polar(theta,r); 对于大量的数据,我们可用hist来显示数据的分情况和统计特性。下面几个命令可用来验证randn产生的高斯随机数分:x=randn(5000,1);%产生5000个m=0,s=1的高斯随机数hist(x,20);%20代表长条的个数 rose和hist很接近,只不过是将数据大小视为角度,数据个数视为距离,并用极坐标绘制表示:x=randn(1000,1);rose(x);