一、二维曲线绘图的基本操作
1、plot指令的基本调用格式
(1)plot(x) x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线 x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。 x为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线
(2)plot(x, y) x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线 x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线 x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。
(3)plot(x1, y1, x2, y2, …) 绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。 其中x为横坐标,y为纵坐标,绘制y=f(x)函数曲线。
2、使用直角坐标系
在[0,2π]区间内,绘制曲线
x = 0:pi/100:2*pi; y = 2*exp(-0.5*x).*sin(2*pi*x); plot(x,y)
3、使用参数方程绘制曲线
t = -pi:pi/100:pi; x = t.*cos(3*t); y = t.*sin(t).^2; plot(x,y)
4、绘制复杂曲线
t=(0:pi/100:pi)’; %长度为101的时间采样列向量 y1=sin(t)*[1,-1]; %包络线函数值,是(101x2)的矩阵 y2=sin(t).*sin(9*t); %长度为101的调制波列向量 t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3); plot(t,y1,'r:',t,y2,'b',t3,y3,'bo') axis([0,pi,-1,1])%控制轴的范围
二、多次叠绘、双纵坐标和多子图
1、多次叠绘
多次调用plot命令在一幅图上绘制多条曲线,需要hold指令的配合。 hold on 保持当前坐标轴和图形,并可以接受下一次绘制。 hold off 取消当前坐标轴和图形保持,这种状态下,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线。
2、双纵坐标:plotyy指令
1、plotyy指令调用格式:
plotyy(x1, y1, x2, y2) x1-y1曲线y轴在左, x2-y2曲线y轴在右。
x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); plotyy(x,y1,x,y2);
3、多子图
3、MATLAB允许在同一图形窗口布置几幅独立的子图。具体指令:
subplot(m, n, k) 使(mxn)幅子图中第k个子图成为当前图 subplot(‘postion’, [left, bottom, width, height]) 在指定的位置上开辟子图,并成为当前图 说明: subplot(m, n, k)的含义:图形窗口包含(mxn)个子图,k为要指定的当前子图的编号。其编号原则: 左上方为第1子图,然后向右向下依次排序。该指令按缺省值分割子图区域。 subplot(‘postion’, [left, bottom, width, height])用于手工指定子图位置,指定位置的四元组采用归一化的标称单位,即认为整个图形窗口绘图区域的高、宽的取值范围都是[0, 1],而左下角为(0,0)坐标。 产生的子图彼此独立。所有的绘图指令均可以在子图中使用。
4、刻度、分格线和坐标框
1、分格线与grid指令
grid on 画出分格线 grid off 不画分格线 MATLAB的缺省设置是不画分格线;分格线的疏密取决于坐标刻度(改变坐标刻度,可改变分格线的疏密)。
2、坐标框
box on 控制加边框线 box off 控制不加边框线 刻度设置
3、指令及格式:
set(gca, ‘xtick’, xs, ‘ytick’, ys) xs、ys可以使任何合法的实数向量,用于分别设置x、y轴的刻度。
5、图形标识
图形标识包括:
图名(title) 坐标轴名(xlabel、ylabel) 图形文本注释(text) 图例(legend)
简捷使用格式
title(s) % s为字符串变量或常量 xlabel(s) ylabel(s) legend(s) text(x, y, s) % 指定坐标(x, y)处加注文字
二、MATLAB文件执行方式
1、M文件的分类
(1)用Matlab语言编写的程序,称为M文件.
是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。
(2)M文件根据调用方式的不同分为两类:
命令文件(Script File) 函数文件(Function File) 它们的扩展名都是.m
说明: ====== 命令文件和函数文件的区别 ======
命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。 命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量也被清除。 命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它
2、函数文件
函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。 Matlab提供的标准函数大部分是由函数文件定义的。
结构:
function 输出形参表 = 函数名(输入形参表) 注释说明部分 函数体语句
说明:
1. 关于函数文件名
函数文件名通常由函数名再加上扩展名.m组成。 当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名 因此调用时使用函数文件名。
2. 关于注释说明部分
注释说明包括3部分: ① 紧随引导行之后以%开头的第一注释行。 这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor 关键词查询和help在线帮助时使用。 ② 第一注释行及之后连续的注释行。 通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全 部在线帮助文本。
③ 与在线帮助文本相隔一空行的注释行。 包括函数文件编写和修改的信息,如作者和版本等。
3、关于return语句
如果在函数文件中插入了return语句,则执行到该语句就结束函数 的执行,流程转至调用该函数的位置。通常也不使用return语句
例5.10 编写函数文件,求半径为r的圆的面积和周长。 函数文件如下: function [s,p] = fcircle(r) % FCIRCLE calculate the area and perimeter of a circle of radii r % r 圆半径 % s 圆面积 % p 圆周长 s = pi*r*r; p = 2*pi*r;
3、函数调用
(1)函数调用的一般格式是:
[输出实参表] = 函数名(输入实参表) 注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。
(2)在Matlab中,函数可以嵌套调用,即一个函数可以调用别的函数。
一个函数调用自身称为函数的递归调用。
显然,求n!需要求(n-1)!,这时可采用递归调用。 函数如下: function f = factor(n) if n<=1 f = 1; else f = factor(n-1)*n; %递归调用求(n-1)! end
4、全局变量与局布变量
Matlab中,函数文件中的变量是局部变量。 如在若干函数中,都把某一变量定义为全局变量,那么这些函数将 共用这个变量。 全局变量的作用域是整个Matlab的工作空间,所有函数都可以对它 进行存取和修改。
全局变量用global命令定义,格式为: global 变量名