5.1 Matlab学习笔记之绘图-绘制二维曲线的基本函数

绘制二维曲线的基本函数

在 MATLAB 中,基本的绘图函数是plot 函数,利用它可以绘制出不同的二维曲线。

1.plot 函数的基本用法

plot 函数用于绘制 xy 平面上的线性坐标曲线图,因此需提供一组x坐标及其各点对应的y坐标,这样就可以绘制分别以x 和y 为横、纵坐标的二维曲线。plot 函数的基本调用格式 如下:

plot(x,y)

其中 ,x 和 y 为长度相同的向量,分别用于存储x 坐标和y 坐标数据。

例1 在0≤x≤2π区间内,绘制曲线
y = 2 e − 0.5 x s i n ( 2 π x ) y=2e^{-0.5x}sin(2πx) y=2e0.5xsin(2πx)
程序如下:

>> x=0:pi/100:2*pi;
>> y=2*exp(-0.5*x).*sin(2*pi*x);
>> plot(x,y)

程序运行后,打开一个图形窗口,在其中绘制函数曲线,如图5-1所示。

untitled

注意:求y 时,指数函数和正弦函数之间要用点乘运算,而因2为标量,所以2与指数函数之间可以用乘法运算。

这样,向量x 和向量y 所包含的元素个数相等,y(i)是x(i)点的函数值。

例2 绘制曲线:
{ x = t c o s 3 t y = t s i n 2 t ( − π ≤ t ≤ π ) \begin{cases} x=tcos3t\\ y=tsin^2t\\ (-\pi≤t≤\pi) \end{cases} x=tcos3ty=tsin2t(πtπ)
这是以参数方程形式给出的二维曲线,只要给定参数向量,再分别求出x、y向量即可绘制 函数曲线。程序如下:

>> t=-pi:pi/100:pi;
>> x=t.*cos(3*t);
>> y=t.*sin(t).*sin(t);
>> plot(x,y);

程序运行后,得到的二维曲线如图5-2所示。

untitled

以上提到plot函数的自变量x、y为长度相同的向量, 这是最常见的情况。在实际应用中还有一些变化,下面分别说明。

(1)当x是向量,y 是矩阵时,x 的长度与矩阵y 的行数或列数必须相等。

  • 如果x 的长度等于y的行数,则以x 和y 的每列为横、纵坐标绘制曲线, 曲线的条数等于y 的列数。
  • 如果x 的长度等于y的列数,则以x 和y 的每行为横、纵坐标绘制 曲线,曲线的条数等于y 的行数。
  • 如果y 是方阵,x 的长度和矩阵y 的行数或列数都相等,则以x 和y 的每列为横、纵坐标绘制曲线

例如,下列程序可以在同一坐标中同时绘制出正弦和余弦曲线。

>> x=linspace(0,2*pi,100);
>> y=[sin(x);cos(x)];
>> plot(x,y)

untitled

程序首先产生一个行向量x, 然后分别求取行向量sin(x)和cos(x),并将它们构成矩阵y的两行,最后在同一坐标中同时绘制出两条曲线。

当x 是矩阵,y 是向量时,y 的长度必须等于矩阵x 的行数或列数,绘制方式与前一种情况相似。

( 2 ) 当x 、y 是同型矩阵时,则以x 、y 对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

例如,在同一坐标中同时绘制出正弦和余弦曲线,可用下面的程序。

>> t=linspace(0,2*pi,100);
>> x=[t;t]';
>> y=[sin(t);cos(t)]';
>> plot(x,y)

(3)plot 函数最简单的调用格式是只包含一个输入参数,即plot(x) 。在这种情况下,

当x是实向量时,则以该向量元素的下标为横坐标,元素值为纵坐标画出一条曲线,这实际上是绘制折线图。

当x是复数向量时,则分别以该向量元素实部和虚部为横、纵坐标绘制出一条曲线。

例如,下面的程序可以绘制一个单位圆。

>> t=0:0.01:2*pi;
>> x=exp(i*t);         %x是一个复数向量
>> plot(x)

untitled

注意:程序中的i是虚数单位,这样x是一个复数向量。为了保证这一点,i不能被赋其他的值。

当x是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于x 矩阵的列数。

当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。例如, 下面的程序可以绘制3个同心圆。

>> t=0:0.01:2*pi;
>> x=exp(i*t);
>> y=[x;2*x;3*x]';
>> plot(y)

untitled

2.含多个输入参数的plo函数

plot 函数可以包含若干组向量对,每一向量对可以绘制出一条曲线。相应的调用格式如下:

plot(x1,y1,x2,y2,…,xn,yn)

(1)当输入参数都为向量时,x1 和 y1,x2 和 y2,…,xn 和 yn 分别组成一组向量对,每一组向量对的长度可以不同。

每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出 条曲线。

例如,下列程序可以在同一坐标中同时绘制出3根正弦曲线。

>> x=linspace(0,2*pi,100);
>> plot(x,sin(x),x,2*sin(x),x,3*sin(x))

untitled

(2)当输入参数有矩阵形式时,配对的x 、y 按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

分析下列程序绘制的曲线。

>> x=linspace(0,2*pi,100);
>> y1=sin(x); 
>> y2=2*sin(x);
>> y3=3*sin(x);
>> x=[x;x;x]';
>> y=[y1;y2;y3]';
>> plot(x,y,x,cos(x))

untitled

3.含选项的plot 函数

MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。

这些选项分别如表1、表2和表3所示,它们可以组合使用。

例如,“b-.” 表示蓝色点画线, “y:d” 表示黄色虚线并用菱形符标记数据点。

当选项省略时,MATLAB规定,线型一律用实线, 自动循环使用当前坐标轴的ColorOrder 属性指定的颜色(默认有7种颜色,详见10.2.2小节), 无数据点标记符号。

表1 线型选项

选 项线 型选 项线 型
-实线(默认值)-.点画线
:虚线双画线

表2 颜色选项

序 号选 项颜 色序 号选 项颜 色
1b(blue)蓝色5m(magenta)品红色
2g(green)绿色6y(yellow)黄色
3r(red)红色7k(black)黑色
4c(cyan)青色8w(white)白色

表3 标记符号选项

选 项标 记 符 号选 项标 记 符 号
.v(字母)朝下三角符号
o(字母)圆圈A朝上三角符号
x(字母)叉号<朝左三角符号
加号>朝右三角符号
*星号p(pentagram)五角星符
s(square)方块符h(hexagram)六角星符
d(diamond)菱形符

要设置曲线样式可以在plot函数中加绘图选项,其调用格式如下:

plot(x1,y1, 选项1,x2,y2, 选项2,…,xn,yn, 选项n)

例3 用不同线型和颜色在同一坐标内绘制曲线
y = 2 e − 0.5 x s i n ( 2 π x ) y=2e^{-0.5x}sin(2πx) y=2e0.5xsin(2πx)
及其包络线。

程序如下:

x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x); 
x1=(0:12)/2;
y3=2*exp(-0.5*x1).*sin(2*pi*x1); 
plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');

untitled

plot 函数中包含3组绘图参数,第一组用黑色虚线绘出两根包络线,第二组用蓝色双画线绘出曲线y, 第三组用红色五角星离散标出数据点。

程序中第一条命令用矩阵转置运算符将行向量转换为列向量。请读者思考,如果这里不用 转置操作,程序会怎样?如果要得到图5-3的图形,程序应如何修改?

>> x=(0:pi/100:2*pi); 
>> y1=[1;-1]*2*exp(-0.5*x);
>> y2=2*exp(-0.5*x).*sin(2*pi*x);
>> x1=(0:12)/2;
>> y3=2*exp(-0.5*x1).*sin(2*pi*x1);
>> plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');

4.双纵坐标函数plotyy

在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数, 其调用格式如下:

plotyy(x1,y1,x2,y2)

其中,x1,y1 对应一条曲线,x2,y2 对应另一条曲线。

横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1 数据对,右纵坐标用于x2,y2数据对。

双纵坐标图形能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中,有利于图形数据的对比分析。

例4 用不同标度在同一坐标内绘制曲线y=sinx及曲线
y = e − 0.5 x s i n ( 2 π x ) y=e^{-0.5x}sin(2πx) y=e0.5xsin(2πx)

>> x=0:pi/100:2*pi;
>> y1=exp(-0.5*x).*sin(2*pi*x);
>> y2=sin(x);
>> plotyy(x,y1,x,y2);

untitled
不同量纲、不同数量级的两个函数绘制在同一坐标中,有利于图形数据的对比分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值