admin 管理员组

文章数量: 1087139


2024年3月18日发(作者:procreate下载正版免费)

实验目的

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维绘图函数

二维图形函数

bar

errorbar

stem

说明

直方图

给图形加上误差范围

柄图(又称针状图)

polar

hist

rose

stairs

fplot

fill

feather

compass

quiver

[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); %绘制直方图。

1

0.5

0

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

1

0

-1

-2

-202468

[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); %绘制柄图

1

0.5

0

-0.5

[3] 阶梯图

0246810

和柄图类似,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函数’)

stair函函

1

0.5

0

-0.5

[4] 饼图

0246810

饼图与直方图的功能类似,都表示资料中某个分量在总量中所占的比例,它的基本命令格

式为:

·pie(x) 绘制向量x的饼图,x中的值被x/sum(x)规范化以确定饼图中每一片的大小。如

果sum(x)<=1,则直接用x中的值作为饼中片的大小,如果sum(x)>1,则只画出饼图的一部分。

·pie(x,explode) 用来从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); %绘制有分离的饼图。

13%

18%

27%

41%

[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代表长条的个数。

800

600

400

200

0

-4-2024

[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(‘极坐标图’)

函函函函

90

1

12060

0.8

0.6

150 0.430

0.2

0

330

240

270

300

180

210

另外,还可以用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(‘随机序列的角度直方图’)

运行后的结果如图所示。

函函函函函函函函函函

90

150

12060

100

150

50

30

180

210

240300

0

330

270

二、 实验内容与步骤

1.创建一个5×5魔方矩阵,并画出表示这个矩阵的图形。

在命令区输入:A=magic(5);

plot(A)

2.在同一坐标轴里绘出y=sin(x),z=cos(x)两条曲线。

在命令区输入:x=linspace(0,2*pi,50);

y=sin(x);

plot(x,y)

hold on

z=cos(x);

plot(x,z)

hold off

1

3

3.画出y=x²的曲线(x∈(-5,5))。在这曲线上加入相同区间里的y=

x

的曲线,

并且要求采用绿色折线标识。

在命令区输入;x=linspace(-5,5,100);

y=x.^2;

plot(x,y)

hold on

z=x.^(1/3);

plot(x,z,’g--’)

hold off

4.在同一窗口,不同坐标系里分别绘出y1=sinx,y2=cosx,y3=cinh(x),

y4=cosh(x)4个图形。

在命令区输入:x=linspace(0,2*pi,30);

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));

5.绘制一个三维曲线x=cosp,y=sinp,z=p。

在命令区输入:p=0:pi/10:20*pi;

x=cos(p);y=sin(p);z=p;

plot3(x,y,z)

三、 练习

1.画出横坐标在(-15,15)上的函数y=cosx的曲线。

2.用图形表示离散函数y=|(n-6)|

-1

,并加入网格。

3.用图形表示连续调制波形y=sin(t)sin(9t)及其包络线。

4.设x=zsin3z,y=zcos3z,要求在-45~45区间内画出x、y、z三维曲线。

5.绘制函数

zsin(r)/r

的三维曲面图,其中

r=x+y

22

四、 实验分析

本次试验主要对MATLAB绘图进行练习,二维作图与三维作图基本相似,只不过参数不同,

多了一个z轴,进行三维图形绘制时注意x,y,z的顺序。

五、 实验总结

MATLAB具有强大的图形功能,能够解决很多的问题,将它们直观的表现出来。


本文标签: 绘制 数据 函数 图形 曲线