第四章Matlab绘图

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:Matlab应用

教材:Matlab应用与实验教程

讲授人:专业技术职务:讲师

学历:研究生学位:硕士

讲授题目:Matlab绘图

所属章节:第四章计划学时:4学时

教学目的和要求:

MATLAB 7语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。

学习完本章之后,将学会使用MATLAB 7的图形处理功能,包括基本的绘图命令、图形的简单控制、图形窗口的编辑以及图形的高级控制等。

教学重点:

•基本的绘图命令

•各种图形注释方法

•三维图形的绘制方法

•特殊一些特殊图形的绘制

•图形的高级控制技巧

教学难点:

•基本的绘图命令

•各种图形注释方法

•三维图形的绘制方法

教学方法:

讲授、演示

使用教具:

多媒体课件

思考题:

1. 绘制正切函数tan x在0≤x≤1上的图像,并为x轴和y轴添加标签。增量设为0.1。

2. 显示同样的图像,把sin(x) 作为第二条曲线添加到第二个图形中。

3. 生成一个列向量表示-π≤x≤π、增量取0.2的数据点。分别使用linspace设置100个点和50个点再绘制图线。

4. 为一个三维图像绘制网格,取-3≤x≤2和-5≤y≤5,增量0.1。再取-5≤x≤5和-5≤y≤5,增量为0.2试试。

5. 使用plot3函数绘制曲线x = e-t cos t、y = e-t sin t和z = t的图像,不要添加坐标轴标签,但要打开网格。

参考资料:

【1】Matlab Programming for Engineers.(Second Edition).Stephen J.Champan

【2】精通Matlab 7王正林.刘明编著.电子工业出版社

第四章Matlab绘图

绘图是数学应用程序在计算机上最有用的一种应用,MATLAB当然也毫不例外。有时我们需要将使手工难以绘制的函数或实验数据的可视化。本章我们将介绍在MATLAB中完成这些任务的命令和技术。

一、2D绘图基础

我们从绘制最基本的图形开始——只有一个变量的函数图形。在MATLAB

中绘图包含下面三个步骤:

1. 定义函数

2. 指定要绘制的函数图形的值范围

3. 调用MATLAB的plot(x, y)函数

当指定函数值的范围时,我们必须告诉MATLAB函数使用的变量增量。使用较少的增量可以使得图形显示更加平滑。如果增量较小,MATLAB会计算更多的函数值,不过通常不需要取得那么小。我们用一个简单的例子来看看如何做。

我们绘制0≤x≤10之间的y = cos(x)的图形。绘制之前,我们要定义这个区间并告诉MATLAB我们所使用的增量。区间使用方括号[]括起来,以下面的形式定义:

[ start : interval : end ]

例如,如果我们要告诉MATLAB在0≤x≤10上以0.1的增量递增,我们输入:

[0:0.1:10]

我们用赋值运算符给这个范围内的变量一个名称,也用这种办法告知MATLAB相关变量和我们要绘制的函数。因此,要绘制y = cos(x),输入的命令如下:

>> x = [0:0.1:10];

>> y = cos(x);

注意我们每行都以分号“;”结尾,记住,这会抑制MATLAB输出。你不会想让MATLAB在屏幕中间输出一大串x值,因此使用了分号。现在我们可以输入下面的命令绘图了:

>> plot(x, y)

输入绘图命令后敲回车ENTER。过一会儿,MATLAB会新开启一个标题为“Figure 1”的新窗口,窗口中含有所绘制的图形。本例中我们得到图4-1。

现在增量呢?假设我们把增量扩大10倍,即把它设置为1,此时使用输入下

面的命令即可:

>> x = [0:1:10];

此时如果尝试再次绘图,我们会得到错误信息:

>> plot(x, y);

??? Error using ==> plot Vectors must be the same lengths.

我们已经定义过y = cos(x),因此MATLAB不能再次绘图。那怎么办?我们必须告诉MATLAB重新计算我们新定义x后的y值。换句话说,正确的行为是

我们重新输入所有的命令:

>> y = cos(x)

y = Columns 1 through 5 1.0000 0.5403 -0.4161 -0.9900

-0.6536 Columns 6 through 10 0.2837 0.9602 0.7539 -0.1455

-0.9111 Column 11 -0.8391

>> plot(x, y)

简短插入语——注意我们在重新定义y的时候去掉了末尾的分号,所以

MATLAB输出了每个x点的cos(x)值。此时如果x点的数量巨大,你会觉得这并不需要显示出来。

好了,现在回到绘图。当我们以较大增量绘图时,所绘制的图像就不那么精确了。看看图4-2中MATLAB以1为增量绘制的图像,此时变得很粗劣。让我们用另一种方法试试。我们把增量设为原来的1/10,即设为0.01。

记住我们需要重新定义y,因此我们需要输入的命令是:

>> x = [0:0.01:10];

>> y = cos(x);

>> plot(x, y)

>> plot(x, y)

这一次我们重现了非常漂亮的y = cos(x)图像,

现在我们知道如何在窗口中直接地绘图了。下一件事你可能就想要绘制一个坐标轴有标签的图像了。这可以通过xlabel和ylabel函数做到。这些函数可以带一个用单引号括起来的参数,该参数就是坐标轴的标签。把xlabel和ylabel函数用逗号分开与plot命令放在同一行。例如,下面的命令产生的图像如图3-4所示:

>> x = [0:0.01:10];

>> y = cos(x);

>> plot(x, y), xlabel('x'), ylabel('cos(x)');

二、更多2D绘图选项

到目前为止,我们知道如何输出函数的一般图像。让我们再看看在绘图时可能会考虑到的选项。如果你要在演示或作业中使用图像,你可能会想要给图像加个标题。MATLAB允许你使用title命令做到这一点,它使用单引号括起来的字符串做参数。标题就会在图像的正上方打印出来。假设现在我们需要绘制某个力的图像,这个力遵循f(t) = e-2t sin t,其中t表示时间,单位是秒,范围0≤t ≤4,每0.02秒取一个数据,另外我们还要在图像上显示“阻尼弹力”。怎样做呢?第一步定义时间间隔,以普通的方法做就行了。这里我们用t代替x。

>> t = [0:0.02:4];

现在我们定义函数,这相当简单:

>> f = exp(-2*t)*sin(t);

然而,当你这样做的时候,我们得到一条错误消息。MATLAB告诉我们:??? Error using ==> mtimes

Inner matrix dimensions must agree.

那么我们如何绕过呢?一种方法是使用fplot函数来代替,fplot函数会绕过绘图的时间间隔,而自动为我们决定绘图的点数。一般地,fplot为你产生尽可能精确的图像,同时它也帮助我们绕过像刚才这样的错误。调用fplot的形式如下

fplot('function string', [xstart, xend])

参数function string告诉fplot你所要绘制的图像函数,而xstart和xend定义了函数的区间。这就简单了,让我们看看如何来求解刚才这个例子。

我们用下面的命令可几步合一,然后敲回车即搞定:

>> fplot('exp(-2*t)*sin(t)',[0, 4]);

MATLAB很快就绘制了图像

相关文档
最新文档