第四章Matlab绘图汇总Word格式.docx
- 文档编号:22252473
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:49.52KB
第四章Matlab绘图汇总Word格式.docx
《第四章Matlab绘图汇总Word格式.docx》由会员分享,可在线阅读,更多相关《第四章Matlab绘图汇总Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
【2】精通Matlab7王正林.刘明编著.电子工业出版社
第四章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:
10];
y=cos(x);
注意我们每行都以分号“;
”结尾,记住,这会抑制MATLAB输出。
你不会想让MATLAB在屏幕中间输出一大串x值,因此使用了分号。
现在我们可以输入下面的命令绘图了:
plot(x,y)
输入绘图命令后敲回车ENTER。
过一会儿,MATLAB会新开启一个标题为“Figure1”的新窗口,窗口中含有所绘制的图形。
本例中我们得到图4-1。
现在增量呢?
假设我们把增量扩大10倍,即把它设置为1,此时使用输入下面的命令即可:
1:
此时如果尝试再次绘图,我们会得到错误信息:
plot(x,y);
?
Errorusing==>
plotVectorsmustbethesamelengths.
我们已经定义过y=cos(x),因此MATLAB不能再次绘图。
那怎么办?
我们必须告诉MATLAB重新计算我们新定义x后的y值。
换句话说,正确的行为是我们重新输入所有的命令:
y=cos(x)
y=Columns1through51.00000.5403-0.4161-0.9900-0.6536Columns6through100.28370.96020.7539-0.1455-0.9111Column11-0.8391
plot(x,y)
简短插入语——注意我们在重新定义y的时候去掉了末尾的分号,所以MATLAB输出了每个x点的cos(x)值。
此时如果x点的数量巨大,你会觉得这并不需要显示出来。
好了,现在回到绘图。
当我们以较大增量绘图时,所绘制的图像就不那么精确了。
看看图4-2中MATLAB以1为增量绘制的图像,此时变得很粗劣。
让我们用另一种方法试试。
我们把增量设为原来的1/10,即设为0.01。
记住我们需要重新定义y,因此我们需要输入的命令是:
0.01:
这一次我们重现了非常漂亮的y=cos(x)图像,
现在我们知道如何在窗口中直接地绘图了。
下一件事你可能就想要绘制一个坐标轴有标签的图像了。
这可以通过xlabel和ylabel函数做到。
这些函数可以带一个用单引号括起来的参数,该参数就是坐标轴的标签。
把xlabel和ylabel函数用逗号分开与plot命令放在同一行。
例如,下面的命令产生的图像如图3-4所示:
plot(x,y),xlabel('
x'
),ylabel('
cos(x)'
);
二、更多2D绘图选项
到目前为止,我们知道如何输出函数的一般图像。
让我们再看看在绘图时可能会考虑到的选项。
如果你要在演示或作业中使用图像,你可能会想要给图像加个标题。
MATLAB允许你使用title命令做到这一点,它使用单引号括起来的字符串做参数。
标题就会在图像的正上方打印出来。
假设现在我们需要绘制某个力的图像,这个力遵循f(t)=e-2tsint,其中t表示时间,单位是秒,范围0≤t≤4,每0.02秒取一个数据,另外我们还要在图像上显示“阻尼弹力”。
怎样做呢?
第一步定义时间间隔,以普通的方法做就行了。
这里我们用t代替x。
t=[0:
0.02:
4];
现在我们定义函数,这相当简单:
>
f=exp(-2*t)*sin(t);
然而,当你这样做的时候,我们得到一条错误消息。
MATLAB告诉我们:
mtimes
Innermatrixdimensionsmustagree.
那么我们如何绕过呢?
一种方法是使用fplot函数来代替,fplot函数会绕过绘图的时间间隔,而自动为我们决定绘图的点数。
一般地,fplot为你产生尽可能精确的图像,同时它也帮助我们绕过像刚才这样的错误。
调用fplot的形式如下
fplot('
functionstring'
[xstart,xend])
参数functionstring告诉fplot你所要绘制的图像函数,而xstart和xend定义了函数的区间。
这就简单了,让我们看看如何来求解刚才这个例子。
我们用下面的命令可几步合一,然后敲回车即搞定:
fplot('
exp(-2*t)*sin(t)'
[0,4]);
MATLAB很快就绘制了图像
如果我们要为图像添加标签和标题,可以使用与plot(x,y)相同的后继步骤。
我们再做一次,这次添加标题“阻尼弹力”和坐标轴标签。
[0,4]),xlabel('
t'
f(t)'
),title('
阻尼弹力'
)
刚才我们介绍了fplot命令,回头再看我们输入指数函数和三角函数相乘时所产生的错误。
我们输入
在MATLAB正确的方法是在乘号(*)前带上一个圆句点句(.*),不明白?
让我演示一遍正确的输入方法:
f=exp(-2*t).*sin(t);
plot(t,f)
这一次可就没有什么错误了,也正确地绘制了图像。
因此,当一个函数是由二个或更多个函数相乘构成,别忘记在相乘时加上“.”以便告诉MATLAB我们是对两个矩阵进行相乘。
在本例中,我们用
f=exp(-2*t).*sin(t);
代替>
,不同的地方是第二部分——我们使用了矩阵相乘(由“.*”指出)。
好了,我们回到老命令plot(x,y)。
我们还有没有什么方法可以装扮我们的二维图像呢?
一种方法是给图像添加是给图像添加网格,这可以通过在绘图语句中添加gridon实现。
在下一例子中,我们绘出y=tanh(x)函数在-6≤x≤6之间的图像并显示网格。
我们先定义间隔:
x=[-6:
6];
接着我们定义函数:
y=tanh(x);
绘图命令看起来如下,而产生的图像如图3-7.
plot(x,y),gridon
三、坐标轴命令
MATLAB允许你用下面的方式在二维绘图中调整坐标轴。
如果我们在绘图命令行中加进axissquare,这会使得MATLAB产生正方形图像。
如果我们输入axisequal,那么MATLAB会产生一个两坐标轴比例和间距都相同的图像。
我们回到刚才y=tanh(x)的例子,我们已经把它绘在图3-7中。
如果你使用axissquare绘图,你会得到与刚才使用默认设置一样的图像。
但假设我们输入:
plot(x,y),gridon,axisequal
在这种情况下,我们得到的图像如图3-8所示。
注意图3-7与图3-8中y轴的间距有很大不同。
在第一种情况中,竖直轴或者说y轴的间距与x轴的不同。
相反,图3-8使用的间距是同样的。
正如从这个鲜明例子看到的,我们可以使用axis命令来产生看起来很不一样的图像,因此我们可以使用这个命令产生不同的风格,选用我们所需要的。
要让MATLAB自动选择,则输入axisauto。
当然,这并不是必须的,除非你已经用过这里所讨论的选项。
四、在同一图像中显示多个函数
在很多情况下需要在同一个图像中绘制多条曲线。
在MATLAB中要这样做也是相当容易的。
我们用在同一个图像中显示两个函数来开始这一节。
让我们把0≤t≤5范围内下面的两个函数绘制在同一个图像中。
f(t)=e-t
g(t)=e-2t
我们把g函数用虚线绘出以便区别这两条曲线。
跟随下面的常规步骤,我们首先定义间隔:
5];
接着我们定义两个函数:
f=exp(-t);
g=exp(-2*t);
要绘制多个函数,我们只需调用plot(x,y)函数,其中参数使用一对对的“x,y”,“x,y”与“x,y”之间相互独立,后面跟着用单引号引起来、用来表示我们所要绘制的第二条曲线风格的字符串。
在这个例子中我们是:
plot(t,f,t,g,'
--'
这告诉MATLAB要绘制f(t)和g(t)函数,并且第二个函数曲线使用虚线。
注意MATLAB以不同的颜色显示每条曲线。
结果如图所示。
MATLAB在图像中可以使用四种基本线条风格。
它们——放在plot中用来表示线条风格字符串后面——是:
●实线'
-'
●虚线'
●虚点线'
-.'
●点线'
:
'
让我们用点线表示f(t)=e-t函数,重新绘制图。
命令是
plot(t,f,'
t,g,'
如果你想让曲线全部用实线表示而只是让颜色不同而已,那么就把表示曲线类型的字符
串省略掉。
图像就会使用实线绘制——这是默认设置。
五、添加图例
专业的图像总是附有图例,告诉读者某个曲线是什么。
在下面的例子中,假设我们要绘制两个表示势能的函数,它们由双曲三角函数sinh(x)和cosh(x)定义,定义域为0≤x≤2。
首先我们定义x:
2];
现在我们定义这两个函数,在MATLAB中把函数称为y并不是什么不可思议的事,所以我们把第二个函数称为z,因此有:
y=sinh(x);
z=cosh(x);
legend命令用起来很简单。
只需把它加在plot(x,y)命令后面,并用单引号把你要添加为图例的文本引起来。
在这个例子中我们有:
legend('
sinh(x)'
'
cosh(x)'
我们只需把这一行添加到plot命令后面。
在这个例子中,我们还包含x和y标签,第一条曲线用实线而第二条曲线用虚点线:
plot(x,y,x,z,'
),xlabel('
Potential'
),
legend('
结果如图3-11所示。
把图例移到一个合适位置对于打印或看起来可能更好,此时只需用鼠标图例拖到你想要的地方即可。
六、设置颜色
每条曲线的颜色MATLAB可以自动设置,我们也选择自己的颜色。
通过在plot命令中指定MATLAB所使用的表示颜色的字符即可。
让我们用一个例子来演示。
我们再次绘制双曲正弦和余弦函数。
这次我们为图像使用不同的区间,选-5≤x≤5。
所以定义我们的数组为:
x=[-5:
现在我们重新定义函数。
记得如果我们不做这一步,我们仍然处在MATLAB的同一会话中。
程序会认为函数仍然采用先前定义的x区间中。
所以我们输入:
现在我们用红曲线表示y蓝曲线表示z重新绘图。
我们通过在plot函数中y和z入口后面分别用字符r和b表示颜色。
命令如下:
plot(x,y,'
r'
x,z,'
b'
MATLAB给用户绘制图像八种颜色选择。
它们如表4-1所示。
颜色
说明符
白色
w
黑色
k
蓝色
b
红色
r
青色
c
绿色
g
洋红
m
y
表4-1MATLAB颜色说明符
七、设置坐标比例
另外我们看一下axis命令如何设置绘图范围。
可以用下面的方式调用axis命令:
axis([xminxmaxyminymax])
假设我们要产生函数y=sin(2x+3)在0≤x≤5之间的图像。
我们可能会考虑函数的y值在-1到1之间,那么就可以设置y轴仅显示这些值。
使用下面格式的命令:
y=sin(2*x+3);
plot(x,y),axis([05-11])
现在我们绘制y=e-3/2xsin(5x+3)的图像。
先试一下0≤x≤5和-1≤y≤1
y=exp(-1.5*x).*sin(5*x+3);
plot(x,y),axis([05-11])
产生的图像如图3-14所示。
正如你从图形所看到的,y轴的范围可以再调整。
我们尝试调整一下图像y值的范围,取-0.7≤y≤0.3。
把axis命令变成下面的形式:
plot(x,y),axis([05-0.70.3])
现在图形看起来更紧凑了,如图3-15。
下面我们绘制y=sin2(5x)的图像。
做为插入语,在MATLAB中我们如何对sin函数进行平方呢?
如果我们输入:
y=sin(5*x)^2
MATLAB将甩出
mpower
Matrixmustbesquare.
对sin函数平方的正确方法是使用数组相乘记号,即使用A.^B表示AB。
因此下面的命令才能正确工作。
y=sin(5*x).^2;
它对数组中的每个元素进行平方而不是对整个数组进行平方。
现在我们使用默认设置来绘图。
MATLAB产生的图像如图4-16所示。
假设我们想要看看x在某个区间内的图像。
例如,我们把x设为0≤x≤1。
输入如下:
plot(x,y),axis([0101])
产生的图像如图3-17所示。
到此,你可以在MATLAB处理基本的绘图了。
接下来我们学习在同一个图中放置两个或多个图像的情况。
八、子图
子图即是要在一个图上显示多于一个图像。
绘制子图使用命令subplot(m,n,p),这里m和n告诉MATLAB产生的产生的子图有m行和n列,p用来告诉MATLAB我们所要贴上去的某个已经绘制的图形窗口。
与以往一样,我们最好用例子演示说明。
用subplot命令创建的图像都有它自己的特性。
第一个例子我们并排显示y=e-1.2xsin(20x)和y=e-2xsin(20x)的图像。
在这两种情况下,我们都设为0≤x≤5和-1≤y≤1。
首先我们定义函数的定义域、函数然后再调用subplot:
y=exp(-1.2*x).*sin(20*x);
subplot(1,2,1)
通过给subplot传递(1,2,1),我们告诉MATLAB我们要创建的图有1行2个窗格块(1行2列)。
接下来特定的图像将显示在第一个窗格块中。
这些窗格块以常规的方式的从左到右编以数字,因此这个图像将显示在左边的窗格块中,不过还没有在它上面放置任何东西。
如图3-18。
现在我们调用plot命令:
plot(x,y),xlabel('
),ylabel('
exp(-1.2x)*sin(20x)'
),axis([05-11])
如果现在看图,函数的图像已经在第一个窗格块中被绘制了。
如图3-19所示。
随着第一个图像创建完成,我们可以继续创建第二个图像。
首先定义函数:
y=exp(-2*x).*sin(20*x);
(插入语——记得两个函数相乘时在“*”前面加上点句号“.”)。
现在我们调用subplot,这一次告诉MATLAB把第二个函数的图像放在第二个窗格块中:
subplot(1,2,2)
MATLAB还没有放上任何东西——记住,我们还必须调用plot命令。
现在图看起来像图3-20。
我们绘制它:
exp(–2x)*sin(20x)'
结果,两个并排的图像如图3-21所示。
九、图像重叠和linspace命令
假设我们绘制了一个函数的图像,然后又决定在同一个图形上再绘制另一个函数的图像。
我们通过告诉MATLABholdon后两次调用plot命令即可做到。
在下面的例子中,我们将绘制cos(x)和sin(x)的图像再把它们放在同一图形上。
首先,我们学习一个用来产生x数集的新命令,即linspace命令,它可以以两种方式调用。
如果我们写成:
x=linspace(a,b)
MATLAB会在a到b间取出均匀分布的100个点(行向量),如果写成
x=linspace(a,b,n)
那么MATLAB会在a、b之间取出均匀分布的n个点。
现在我们使用这个工具来绘制cos(x)和sin(x)的图像。
我们用下面的命令在0到2π之间间隔均匀地取出100个点:
x=linspace(0,2*pi);
现在我们绘制cos(x):
plot(x,cos(x))
我们产生的图像如图3-22所示。
如果现在输入:
plot(x,sin(x))MATLAB会把先前的输出冲掉。
现在图形窗口变成图3-23。
快速便道——注意虽然我们定义了x的范围在0≤x≤2π之间,MATLAB计算的图形比函数所计算图像宽了一些。
我们可以在调用plot(x,sin(x))时用axis命令进行修正:
plot(x,sin(x)),axis([02*pi-11])
现在产生的图像好看一些了,如图3-24。
回到我们的困境,我们要在一个图形上绘制cos(x)的同时再绘上sin(x)。
可以通过下面的命令组做到:
plot(x,cos(x)),axis([02*pi-11])
holdon>
plot(x,sin(x)),axis([02*pi-11])
结果如图3-25所示,在同一个图形上显示两条曲线。
如果需要,你可以用我们前面所介绍的选项为每曲线选择线条类型和颜色。
十、极坐标和对数图像
如果你使用过微积分,毫无疑问你不会对极坐标图像和对数图像感到陌生。
回想我们用手工绘制这些图像的时候——如果可以用计算机程序进行绘制或检验你的答案岂不大快人心?
谢天谢地,MATLAB可以做到。
我们先看看极坐标图像,它绘制半径r和角度θ之间的图像。
作为第一个例子,我们绘制一条螺线——阿基米德螺线——它由下面的简单关系构成:
r=aθ
其中a是一个常数。
我们绘制a=2和0≤θ≤2π的极坐标图像。
第一个语句,我们定义常数:
a=2;
这确实是够简单的了。
接着我们定义函数r(θ),这需要两步完成,第一步把θ与我们前面例子中的独立变量x一样看待,所以我们要定义它的名称、区间和所要使用的增量,第二步我们再定义r:
theta=[0:
pi/90:
2*pi];
r=a*theta;
这些语句告诉MATLABtheta定义在0≤θ≤2π之间,并选择增量为π/90。
产生极坐标图像的命令为:
polar(theta,r)
现在我们调用它,同时给它添加一个标题:
polar(theta,r),title('
阿基米德螺线'
结果如图3-26所示。
图3-26极坐标系中的阿基米德螺线图像很多plot可用的选项polar同样可用。
很多plot可用的选项polar同样可用。
第二个例子,假设我们要绘制下面函数的极坐标图像:
r=1+2cosθ这里0≤θ≤6π,并用虚线绘制。
首先我们定义θ区间:
6*pi];
现在输入函数r(θ):
r=1+2*cos(theta);
现在告诉MATLAB用练色虚点线绘制曲线。
如下输入:
polar(theta,r,'
r-.'
产生的图像如图3-27所示。
现在我们来看看如何用MATLAB来绘制对数图像。
这曾经让我头痛。
如果你是电子工程师,你会发现这个特性很有用。
第一种我们能使用的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 Matlab 绘图 汇总