Matlab实验报告(三)MATLAB绘图
实验⽬的
1.掌握MATLAB的基本绘图命令。
2.掌握运⽤MATLAB绘制⼀维、⼆维、三维图形的⽅法。
3.给图形加以修饰。
⼀、预备知识
1.基本绘图命令plot
plot绘图命令⼀共有三种形式:
⑴plot(y)是plot命令中最为简单的形式,当y为向量时,以y的元素为纵坐标,元素相应的序列号为横坐标,绘制出连线;若y为实矩阵,则按照列绘出每列元素和其序列号的对应关系,曲线数等于矩阵的列数;当y为复矩阵时,则按列以每列元素的实部为横坐标,以虚部为纵坐标,绘出曲线,曲线数等于列数。
⑵ plot(x,y,[linspec])其中linspec是可选的,⽤它来说明线型。
当x和y为同维向量时,以x为横坐标,y为纵坐标绘制曲线;当x是向量,y是每⾏元素数⽬和x维数相同的矩阵时,将绘出以x为横坐标,以y中每⾏元素为纵坐标的多条曲线,曲线数等于矩阵⾏数;当x为矩阵,y为相应向量时,使⽤该命令也能绘出相应图形。
⑶plot(x1,y1,x2,y2,x3,y3……)
能够绘制多条曲线,每条曲线分别以x和y为横纵坐标,各条曲线互不影响。
线型和颜⾊
MATLAB可以对线型和颜⾊进⾏设定,线型和颜⾊种类如下:
线:—实线:点线—.虚点线——折线
点:.圆点 +加号 *星号 x x型 o 空⼼⼩圆
颜⾊:y 黄 r 红 g 绿 b 蓝 w ⽩ k ⿊ m 紫 c 青
特殊的⼆维图形函数
表5 特殊2维绘图函数
[1] 直⽅图
在实际中,常会遇到离散数据,当需要⽐较数据、分析数据在总量中的⽐例时,直⽅图就是⼀种理想的选择,但要注意该⽅法适⽤于数据较少的情况。直⽅图的绘图函数有以下两种基本形式。
·bar(x,y) 绘制m*n 矩阵的直⽅图。其中y 为m*n 矩阵或向量,x 必须单向递增。 ·bar(y) 绘制y 向量的直⽅图,x 向量默认为
x=1:m close all; %关闭所有的图形视窗。 x=1:10;
y=rand(size(x)); bar(x,y); %绘制直⽅图。
12345678910
0.5
1
Bar()函数还有barh()和errorbar()两种形式,barh()⽤来绘制⽔平⽅向的直⽅图,其参数与bar()相同,当知道资料的误差值时,可⽤errorbar()绘制出误差范围,其⼀般语法形式为:errorbar(x,y,l,u)其中x,y 是其绘制曲线的坐标,l,u 是曲线误差的最⼩值和最⼤值,制图时,l 向量在曲线下⽅,u 向量在曲线上⽅。
或⽤errorbar(x,y,e)绘制误差范围是[y-e,y+e]的误差直⽅图。下⾯看⼀个例⼦。 x=linspace(0,2,20)*pi y=sin(x)
e=std(y)*ones(size(x)); %设置误差为原始数据的标准差。 errorbar(x,y,e); %绘制以标准差为误差范围的误差直⽅图。
-2
2
4
6
8
-2-101
2
[2] 柄图
柄图⼜称⽕柴杆图或针状图,主要⽤来绘制数位信号。该图把每个数据点画成⼀条直线,在直线未端⽤点表⽰数据,所以形象地称作⽕柴杆图或针状图(⼤头针)。
绘制此图形的函数为stem()函数,常⽤格式如下:
·stem(y) 向量y 的值作为柄的长度从x 轴延伸,x 值⾃动产⽣,当y 为矩阵时,每⼀⾏的值在同⼀个柄上⽣成。
·stem(x,y) 绘制x 对y 的列向量的柄图。x 和y 可以是同样⼤⼩的向量或矩阵,当x 为⾏或列向量时,y ⾏数必须与x 的长度相同。
·stem(…,’fill’) fill 参数确定是否填充柄的头部
·stem(…,linespec) linespec 确定柄图线的属性,如线型,颜⾊及标记等。下⾯是绘制柄图的⼀个简单的例⼦。
x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y); %绘制柄图
0246810
[3] 阶梯图
和柄图类似,stairs()函数也常⽤来绘制横坐标是时间序列的数位信号,⼜称阶梯图。不同的是stairs()函数绘制出的阶梯图其相邻数据点间不⽤直线连接,⽽是相邻两点间的值全取起点数据的值,该函数的常⽤语法格式与stem()函数类似的有:
stairs(y) stairs(x,y) stairs(…,linespec)
变量的含义与stem()函数类似。 Stairs()函数画出阶梯图例⼦如下所⽰: x=linspace(0,10,50); y=sin(x).*exp(-x/3);
stairs(x,y); %绘制函数y 的阶梯图 title(‘stair 函数’)
0246810
-0.5
0.5
1
stairo¯êy
[4] 饼图
饼图与直⽅图的功能类似,都表⽰资料中某个分量在总量中所占的⽐例,它的基本命令格式为:
·pie(x) 绘制向量x 的饼图,x 中的值被x/sum(x)规范化以确定饼图中每⼀⽚的⼤⼩。如
果sum(x)<=1,则直接⽤x中的值作为饼中⽚的⼤⼩,如果sum(x)>1,则只画出饼图的⼀部分。
·pie(x,e xplode) ⽤来从x的饼图中去掉explode向量表⽰的⽚,explode必须与x⼤⼩相同。explode向量被置1的分量对应⽚与此饼图分开。
·pie(x,label) ⽤来标注饼图中⽚的名称。
下⾯是⼀个⽤函数绘制饼图的例⼦。
x=[11.4,23.5,35.4,15.6]; %某⼯⼚4个季度的⽣产量。
explode=zeros(size(x)); %⽣成零向量。
[c,offset]=min(x); %c=1,求最⼩值的下标offset,c=1。
explode(offset)=1; %指定占⽐例最⼩的⼀块和整个饼分离。
pie(x,explode); %绘制有分离的饼图。
[5] 频数累计柱状图
频数累计柱状图主要⽤于在笛卡尔坐标系中统计在⼀定范围内数据的频数,并⽤柱状图表⽰出来,可⽤⼤量的资料显⽰其分布情况和统计特性。函数hist()的常⽤语法格式为:·n=hist(y) 把y向量中的数据等划分为10个区间进⾏统计,最后画出10个柱形。如果y 为矩阵,则按列计算。
·n=hist(y,x) 其中y为要统计的。当x为标量时,x指定了统计的区间数;当x为向量时,以该向量中各元素为中⼼进⾏统计,区间数等于x向量的长度。
·n=hist(y,n) 其中n为要绘出的柱形数。
下⾯是柱形图的⼀个例⼦。
x=randn(5000,1); %产⽣5000个m=0,s=1,的⾼斯乱数
hist(x,20); %20代表长条的个数。
-4
-2024
020*******
800
[6]极坐标图
极坐标图在⼯程计算中应⽤⼗分⼴泛,MATLAB ⽤polar()函数绘制极坐标图,函数的常⽤语法格式为:
polar(theta,rho) ⽤⾓度theta 对极半径rho 作图。其中theta 必须⽤弧度表⽰,如⽤⾓度需先转换。
polar(theta,rho,s) theta 与rho 同前,s 为曲线使⽤的线型。应⽤如下,得到的结果如图所⽰。 theta=linspace(0,2*pi);
r=cos(4*theta); polar(theta,r); title(‘极坐标图’)
×?±êí?
另外,还可以⽤rose()函数在极坐标系中绘制频数累计柱状图—⾓度直⽅图(⼜称玫瑰图)。rose 和hist 很接近,只不过是将数据⼤⼩视为⾓度,数据个数视为距离,并⽤极坐标绘制表⽰。该函数的常⽤语法格式为:
·rose(theta) ⽤相⾓theta 绘制⾓度直⽅图
·
rose(theta,nbins) 其中nbins 是⼀个整数,把0-2Π分成等份,默认值为20。 ·rose(theta,x) 其中x 是⼀个向量,⽤theta 对向量x 作图。
接下来绘制离散随机序列的⾓度直⽅图。
x=randn(1000,1);
rose(x);
title(‘随机序列的⾓度直⽅图’)
运⾏后的结果如图所⽰。
úDòáDµ?è?±·?í?
⼆、实验内容与步骤
1.创建⼀个5×5魔⽅矩阵,并画出表⽰这个矩阵的图形。
在命令区输⼊:A=magic(5);
plot(A)
linspace函数调用的格式为
2.在同⼀坐标轴⾥绘出y=sin(x),z=cos(x)两条曲线。
在命令区输⼊:x=linspace(0,2*pi,50);
y=sin(x);
plot(x,y)
hold on
z=cos(x);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论