MATLAB讲义.docx

上传人:b****2 文档编号:2843821 上传时间:2023-05-04 格式:DOCX 页数:34 大小:497.77KB
下载 相关 举报
MATLAB讲义.docx_第1页
第1页 / 共34页
MATLAB讲义.docx_第2页
第2页 / 共34页
MATLAB讲义.docx_第3页
第3页 / 共34页
MATLAB讲义.docx_第4页
第4页 / 共34页
MATLAB讲义.docx_第5页
第5页 / 共34页
MATLAB讲义.docx_第6页
第6页 / 共34页
MATLAB讲义.docx_第7页
第7页 / 共34页
MATLAB讲义.docx_第8页
第8页 / 共34页
MATLAB讲义.docx_第9页
第9页 / 共34页
MATLAB讲义.docx_第10页
第10页 / 共34页
MATLAB讲义.docx_第11页
第11页 / 共34页
MATLAB讲义.docx_第12页
第12页 / 共34页
MATLAB讲义.docx_第13页
第13页 / 共34页
MATLAB讲义.docx_第14页
第14页 / 共34页
MATLAB讲义.docx_第15页
第15页 / 共34页
MATLAB讲义.docx_第16页
第16页 / 共34页
MATLAB讲义.docx_第17页
第17页 / 共34页
MATLAB讲义.docx_第18页
第18页 / 共34页
MATLAB讲义.docx_第19页
第19页 / 共34页
MATLAB讲义.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB讲义.docx

《MATLAB讲义.docx》由会员分享,可在线阅读,更多相关《MATLAB讲义.docx(34页珍藏版)》请在冰点文库上搜索。

MATLAB讲义.docx

MATLAB讲义

第六章MATLAB语言简介

MATLAB语言是一种用于科学和工程计算的高级语言,在科学计算、自动控制、动态系统仿真、信号处理、神经网络、优化、小波分析、图形处理等领域提供了强大的处理功能,具有很高的编程效率。

MATLAB语言的特点是语法规则简单明了,使用者只须花很少的时间就可以掌握它的基本使用方法,程序编写短小,调试方便灵活快捷,编程效率高,不必象Basic、Fortran和C语言那样花费大量的时间和精力用于编程和调试,而采用Fortran和C语言编写的程序可以方便地被MATLAB调用﹔MATLAB尤其擅长矩阵运算,处理各种矩阵运算问题十分简便和高效﹔MATLB还提供了强大的图形功能,具有丰富的绘图命令,使用户可以很方便地绘制自己所需要的图形﹔在仿真方面,运用MATLAB所提供的仿真利器Simulink使得建模、仿真和分析工作变得直观、高效和方便灵活。

MATLAB(MATrixLABoratory,即矩阵实验室)是美国Mathworks公司推出的软件产品,其创始人为CleveMoler博士。

MATLAB的第一个正式版本(DOS版本)于1984年推出;目前的最新版本是可运行于Windows98/2000/XP环境下的MATLABR2010a。

MATLAB是当今世界上最为流行的数学软件之一,除了在主软件包中提供诸如数值计算、图形绘制、数据处理等一些通用功能外,还提供了扩充主程序包、解决不同专业领域问题的工具箱(TOOLBOX),如控制系统工具箱(ControlSystemToolbox),系统辩识工具箱(SystemIdentificationToolbox),信号处理工具箱(SignalProcessingToolbox),频率域系统辨识工具箱(FrequencyDomainSystemIdentificationToolbox),模糊逻辑工具箱(FuzzyLogicToolbox),μ分析与综合工具箱(μ-AnalysisandSynthesisToolbox),优化工具箱(OptimizationToolbox),神经网络工具箱(NeuralNetworkToolbox),小波工具箱(WaveletToolbox)等等以及交互式仿真环境Simulink(新增SimMechanics)。

MATLAB本身是一个十分庞大的软件包,考虑到篇幅上的限制以及实际应用情况,本章仅从仿真的角度,对目前较为流行的MATLAB7.7版本作一介绍。

6.1MATLAB的安装

安装MATLAB7.7之前应首先启动中文版MiscrosoftWindows98/2000/XP操作系统,然后将装有MATLAB7.7的光盘插入光驱,光盘中的自动安装程序就会启动。

也可打开程序管理器窗口,查看光盘中的文件目录,找到Setup.exe并用鼠标左键双击,启动安装程序。

按照计算机屏幕上的安装提示即可一步一步地进行安装。

当按照要求输入用户名、单位名称以及安装密码后,用鼠标单击屏幕上的“Next”按钮,计算机屏幕上就会出现图6.1-1所示内容。

在每个部件左侧都有方框,“”表示该部件将被安装。

用鼠标左键点击该处可决定相应部件是否需要安装。

安装时还应注意屏幕下方可用磁盘空间的提示,在所需安装空间小于可用磁盘空间时可全部安装,否则应去掉一部分不必要的组件或用鼠标点击“Browse…”按钮另选驱动器。

完成该步后用鼠标点击“Next”按钮,根据安装提示完成余下安装工作。

6.2MATLAB的启动与基本操作

在Windows95/98/2000/XP中将鼠标移至屏幕的左下角单击“开始”→“程序”→“Matlab”→“MATLAB”即可启动MATLAB;也可先建立MATLAB快捷方式,然后用鼠标双击

图6.1-1MATLAB组件的选择

MATLAB图标启动MATLAB。

启动后,Windows98/2000/XP中会出现图6.2-1所示的窗口,称为MATLAB命令窗口(MATLABCommandWindow),它是MATLAB的工作空间,程序的编写、运行和调试都在这个工作空间中进行。

用户也可以在这个窗口中输入MATLAB命令。

图6.2-1MATLAB命令窗口

MATLAB命令窗口标题栏下部有File、Edit、Window和Help四个主菜单,每个主菜单选项又有若干个子菜单。

主菜单下方是工具栏,其中的十个图标的作用按从左到右的顺序依次为:

建立新的M文件(关于M文件将在稍后的内容中进行介绍)、打开已有M文件、剪切、复制、粘贴、撤消操作、工作空间浏览器、路径浏览器、建立新的Simulink模型以及帮助。

命令窗口内的两行文字是关于联机帮助、程序演示以及MathWorks公司产品信息的命令提示,用户可以在命令行中输入这些命令,执行后得到相应输出内容。

在命令窗口中执行MATLAB命令是非常方便的,例如,已知矩阵

求a矩阵的逆。

在命令窗口中输入:

a=[2,1,1;2,3,2;1,1,2]

并按回车键,屏幕上会显示:

a=

211

232

112

再接着输入:

b=inv(a)

屏幕上会显示:

b=

0.8000-0.2000-0.2000

-0.40000.6000-0.4000

-0.2000-0.20000.8000

其中b代表a矩阵的逆矩阵。

MATLAB的直观、简单、方便之处由此可见一斑,它也被称为“演算纸式的科学计算语言”。

又例如求解非线性方程组:

应用MATLAB对上述方程组进行求解的过程如下:

建立函数fun2.m

functionG=fun2(a)

f1=a

(1)-5*a

(2)*a

(2)+7*a(3)*a(3)+12;

f2=3*a

(1)*a

(2)+a

(1)*a(3)-11*a

(1);

f3=2*a

(2)*a(3)+40*a

(1);

G=[f1;f2;f3];

建立主程序mfnl.m

a0=[2,6,-3];

options=optimset('Display','off');

[a,fval]=fsolve(@fun2,a0,options)

在CommandWindow中输入主程序名mfn1,运行程序后可求出方程解:

1,5,-4

可见MATLAB编程效率要远远高于VC、VB等高级语言。

6.3MATLAB语言程序设计概述

用MATLAB语言编写程序,与我们日常在纸上书写数学公式相比,在思路上和习惯上是一致的,对用户的计算机软、硬件知识的要求也没有VC语言和VB语言那样高,一些常用的功能如矩阵运算、常微分方程求解、绘图等都已经以库函数的形式存在,用户使用时直接调用即可。

因此尽管MATLAB的功能十分强大,但学起来并不困难,程序的编写也简单、方便。

.

6.3.1变量、表达式和语句

MATLAB语言中的变量用变量名表示,变量名由字母和数字组成,但最多不能超过19个,否则不被接收,而且第一个字符必须是字母。

函数名的命名与变量名相同。

MATLAB语言区分变量名的大小写,如Ab、AB、ab分别代表三个不同的变量。

但是函数名必须是小写字母,如前面例子中求矩阵a的逆矩阵要写成inv(a),若写成Inv(a),MATLAB将不予接受并给出提示信息,认为它是未定义变量或将内部函数大写。

表达式由变量名、函数、运算符以及一些特殊字符组成,表达式的运算结果为一个矩阵。

在MATLAB中,语句有下列两种形式:

变量名=表达式

表达式

对于第一种情况,表达式的结果赋给变量名;对于第二种情况,表达式运算结果赋给MATLAB的永久变量ans,例如,在命令窗口中键入:

2+3并按回车键,则屏幕上将相应地显示:

ans=

5

一条语句可以用回车、逗号或分号结束,如果以分号结束,则这条语句的运行结果将不显示在屏幕上。

另外,当一条语句很长,一行写不下时,可在该行末尾输入三个点号“...”,然后按回车键,在下面的一行接着写。

6.3.2矩阵的输入与基本运算

MATLAB以复矩阵作为基本运算单元,而向量和数量则分别作为特例,即1×n(行向量)或n×1(列向量)、1×1的矩阵来处理的。

对矩阵进行处理,应首先了解在MATLB中矩阵是如何输入的。

输入矩阵可以采用下面的四种方式:

1)在MATLA环境下直接输入矩阵的各个元素

具体来说,将矩阵中的各个元素按其在矩阵中的排列顺序逐行输入方括号中,同一行的元素之间用逗号或空格隔开,行与行之间用分号隔开,如6.2节中的矩阵例题所示。

向量的输入可作为矩阵输入的特殊情况,例如,输入行向量a和列向量b:

a=[1357],b=[1;3;5;7]

屏幕上将会相应地显示:

a=

1357

b=

1

3

5

7

输入矩阵时也可用回车键代替分号,例如,可按如下方式输入6.2节中的a矩阵:

a=[211

232

112]

2)用MATLAB语句和内部函数产生

利用这种方式产生矩阵的具体作法很多,可参见MATLAB的有关专著及说明书。

这里仅举例作一说明,若输入:

a=1:

4;

b=4:

-1:

1;

c=[a;b]

则相应显示结果为:

c=

1234

4321

这里,“:

”的作用是分别产生1~4,增量为1的行向量和4~1,增量为-1的行向量。

用于建立矩阵的函数可详见MATLAB使用手册,这里不再赘述。

3)通过建立M文件输入矩阵

这种方式比较适合于矩阵较大的场合。

例如,建立一个M文件(M文件的内容将在后面介绍),按矩阵的输入方式输入:

a=[1234

5678]

并存为mf.m,这里,mf为文件名字,m为文件后缀。

在命令窗口中键入mf并回车,屏幕将显示:

a=

1234

5678

4)从一个外部数据文件中读入

MATLAB的矩阵处理能力非常强大,这里仅介绍矩阵的基本运算。

矩阵的转置:

用符号“'”来实现。

例如,对于上面的a矩阵,在命令窗口中接着输入:

b=a'并回车,则显示结果为:

b=

15

26

37

48

矩阵的加减:

只有阶数相同的矩阵才能进行加减,运算符分别为“+”和“-”,如c=a+b、c=a-b。

矩阵相乘:

运算符为“*”,前一个矩阵的行数应等于后一个矩阵的列数,例如,a=[1–32],b=[-201]′,则a*b的结果为:

ans=

-4

b*a的结果为:

ans=

-26-4

000

-13-2

矩阵的除法:

运算符有“\”和“/”两种,分别代表左除和右除。

如对于矩阵A和B,A\B相当于A-1B;B/A相当于BA-1。

一般情况下,X=A\B是线性方程组A*X=B的解,X=B/A是线性方程组X*A=B的解,通常,A\B≠B/A。

矩阵的乘方:

运算符为“∧”。

如对于方阵A,“A∧x”表示A的x次方,若x为正整数,“A∧x”表示A自乘x次;若x为负整数,Ax表示A的逆矩阵自乘x次;当x为非整数时,

其中,V为矩阵A的特征向量矩阵,

1,…

n为矩阵A的特征值。

矩阵的下标及其运算:

矩阵中的元素可用矩阵名后跟一对括有下标的圆括号来表达,下标标明了元素在矩阵中的位置。

例如,已知矩阵:

则A(1,2)=2,A(2,3)=6,A(3,3)=9等等。

可利用下标对矩阵中的元素重新赋值和运算,例如,执行A(2,1)=-20后,A的第二行第一列元素的值就由原来的4变为-20,执行A(3,3)=A(3,1)+A(3,2)后,A(3,3)的值就由原来的9变为15。

若给出的下标超出了原有矩阵的范围,MATLAB将自动对原矩阵进行扩展,并将扩展后矩阵中未赋值的元素自动置0,例如,执行A(3,4)=-7后,上述A矩阵变为:

6.3.3矩阵函数

这里主要介绍常用的三角分解,正交变换,求特征值,奇异值分解等矩阵函数。

1)三角分解

这种分解方法将一个方阵分解为上三角矩阵和下三角矩阵的乘积,通常也称为LU分解。

用于三角分解的函数为lu。

例如,已知矩阵:

将其输入MATLAB,执行命令:

[L,U]=lu(A)

得到的结果为:

L=

-0.5000-0.33331.0000

1.000000

-0.50001.00000

U=

-4.00000-5.0000

0-3.0000-6.5000

00-6.6667

其中L可以通过行的交换重新排列成下三角矩阵,并使其主对角线元素为1(这里,交换1、3行);U为上三角矩阵。

还可通过如下命令验证LU分解的正确性:

L*U

结果为:

ans=

212

-40-5

2-3-4

2)正交变换

也称为QR分解,它将方阵或长方阵化为正交矩阵和上三角矩阵的乘积,所使用的函数为qr。

例如,对矩阵:

进行QR分解,输入矩阵A并执行命令:

[Q,R]=qr(A)

输出的结果为:

Q=

-0.33330.77520.5367

-0.66670.2087-0.7155

-0.6667-0.59630.4472

R=

-3.00002.6667-3.0000

03.7268-2.4150

003.4883

如需要验证,执行命令Q*R,所得结果即为矩阵A。

3)矩阵的特征值

求特征值的MATLAB函数为eig,设A为n×n阶矩阵,若A为实对称矩阵,则特征值为实数,若A为非对称矩阵,则很多情况下特征值为复数。

例如,

则执行命令eig(A)的结果为:

ans=

0.5276

3.7362+1.7602i

3.7362-1.7602i

采用下面的方式可以同时得到矩阵的特征值和特征向量:

[X,D]=eig(A)

其中,D是由特征值组成的对角矩阵,X为矩阵,其各个列由对应的特征向量组成,满足A*X=X*D

4)奇异值分解

MATLAB的奇异值分解函数为svd,用来进行奇异分解的语句为:

[U,S,V]=svd(A)

其中,U和V是正交矩阵,S为奇异值组成的对角矩阵,它们满足:

A=U*S*V′。

6.3.4控制语句

常用的MATLAB控制语句有循环语句和条件转移语句。

1.循环语句:

包括for循环语句和while循环语句

与其它计算机语言一样,MATLAB语言也有for循环语句,用于循环次数已经确定的情况下反复执行一组语句。

其基本格式为:

for循环变量=表达式1:

表达式2:

表达式3

循环语句组

end

其中,表达式1、2、3分别为循环变量的初始值、增量和终值。

当循环变量的增量为1时,表达式2可省略不写,例如fori=1:

1:

10可写为:

fori=1:

10。

这里应值得注意的是,for与end必须成对使用。

此外,for语句允许嵌套使用,例如:

fori=1:

9

forj=1:

9

A(i,j)=i+j;

end

end

A

程序中分号的作用是避免每计算一个A中的元素都显示一次。

创建的A矩阵通过最后一条语句显示出来。

While循环语句的作用是在一定的逻辑条件下重复地执行一组语句,其循环次数不预先确定。

基本格式为:

while(条件表达式)

循环语句组

end

While循环语句也允许嵌套。

执行While语句时,先判断条件表达式中的条件是否满足,若满足,则执行循环语句组,否则结束循环并继续向下执行。

例如:

sum=0;

i=1;

while(i<=100)

sum=sum+1;

i=i+1;

end

sum

这个程序可求出1+2+…+100之和。

此外,for语句和for语句也允许相互嵌套。

2.条件转移语句

在MATLAB提供的各种条件转移语句中,最简单的是if条件语句,它的三种结构形式列于表6.1:

表6.3.1if语句的三种结构形式

if(条件式)

语句组

end

 

if(条件式)

语句组1

else

语句组2

end

if(条件式1)

语句组1

elseif(条件式2)

语句组2

………………

else

语句组n

end

例如,已知函数:

可利用if语句对y进行赋值:

ifx>0

y=1;

elseifx==0

y=0;

else

y=-1

end

其中的符号“==”是关系运算符,MATLAB提供了如下6种运算符:

<小于

<=小于等于

>大于

>=大于等于

==等于

~=不等于

6.3.5绘图

MATLAB丰富的图形绘制功能使得我们在绘制实验数据曲线、二维、三维函数曲线以及曲面甚至更为复杂的图形处理等方面有了简单、方便快捷的工具。

1.二维绘图

如果已将两组数据通过某种方式分别存储在向量x、y中,那么就可以很方便地用plot函数将其关系曲线画出来。

plot函数的调用格式为:

plot(x,y)

图6.3-1用plot函数绘制的曲线

例如,输入下面的命令:

x=[12345678];

y=[00.150.470.720.890.961.221.08];

plot(x,y)

则MATLAB会打开一个图形窗口,显示如图6.3-1所示的相应曲线。

还可进一步为图形加上标题,为x、y轴加上标注并为图形打上网格,为此,只须切换到命令窗口中并接着输入如下四条命令:

title('curve');

xlabel('xaxis');

ylabel('yaxis');

grid

则图形就会变为图6.3-2所示的情况。

这四条语句中,第一条语句为图形加上标题“curve”,第二、三条语句分别为x、y轴加上标注,第四条语句是打网格。

图6.3-2经过标注后的图形

绘制函数曲线可以先用MATLAB命令产生一组数据并赋给x、y,然后再调用plot函数。

在一个绘图窗口中也可以绘制多条曲线,比较简单的方法是先将这些曲线的数据赋给相应的向量x1、y1,x2、y2,……,xn、yn,然后用命令plot(x1、y1,x2、y2,……,xn、yn)画出,同时,还可在plot函数中输入不同选项将不同的曲线用不同的线型、符号和颜色表达,见表6.2。

表6.3.2MATLAB中各种线型、符号和颜色的表达及其含义

线型

符号

颜色

选项

说明

选项

说明

选项

说明

-

--

:

-.

实线

虚线

点线

点划线

.

o

x

+

*

^

用点号标记数据点

用圆圈标记数据点

用叉号标记数据点

用加号标记数据点

用星号标记数据点

用△标记数据点

b

c

g

k

m

r

w

y

蓝色

蓝绿色

绿色

黑色

洋红色

红色

白色

黄色

例如,输入下面的命令可在同一图形窗口中画出正弦和余弦曲线:

x1=0:

pi/10:

2*pi;

y1=sin(x1);

x2=0:

pi/10:

2*pi;

y2=cos(x2);

plot(x1,y1,'r--',x2,y2,'b-.',x1,y1,'ro',x2,y2,'b^');

title('SineandCosineCurves');xlabel('xaxis');

ylabel('yaxis')

在plot语句中,四组选项的作用依次是:

用红色虚线画出正弦曲线,用蓝色点划线画出余弦曲线,用红色圆圈标记正弦曲线数据点,用蓝色△标记余弦曲线数据点,当然,这四组也可以分别写成四条plot语句(如第一句为plot(x1,y1,'r--'))。

若想在图中对正弦曲线加上说明,可继续在命令窗口中输入gtext('sin(x)')并回车,图形窗口中会出现一个大的十字交叉线,移动鼠标将交叉点挪到标注位置并点击左键,则标注内容“sin(x)”就会出现在交叉点所在位置,同样可以将文本“cos(x)”标注到图中,如图6.3-3所示。

图6.3-3用不同线型、符号和颜色绘制的正弦和余弦曲线

除了上述二维绘图之外,利用MATLAB所提供的绘图函数还可绘制对数坐标曲线、半对数坐标曲线、极坐标曲线和直方图等。

下面将分别进行简要介绍。

函数loglog使用横、纵坐标均为以10为底的坐标系绘制曲线,使用方法与plot函数相类似﹔

函数semilogx使用横坐标为以10为底对数坐标、纵坐标为线性坐标的坐标系绘制曲线,使用方法与plot函数相类似﹔

函数semilogy使用横坐标为线性坐标、纵坐标为以10为底对数坐标的坐标系绘制曲线,使用方法与plot函数相类似﹔

当使用线性等间隔的数据向量绘制对数曲线时,由于数据在对数坐标系下不均匀,常常会出现曲线不光滑的情况,为此,MATLAB提供了函数logspace用于产生对数等间隔的向量,调用格式为:

x=logspace(d1,d2,n)

其含义是在10d1至10d2之间产生n个对数等间隔的数据并赋给向量x。

polar函数用于极坐标系下绘制曲线,其调用格式为:

polar(theta,rho,选项)

其中,theta和rho分别为角度向量和幅值向量,选项与polar函数相类似。

函数bar是绘制直方图的函数,可采用如下格式调用:

bar(x,y,选项)

MATLAB还允许将一个图形窗口分成若干部分,分别绘制不同的图形,相应的函数为subplot,调用格式为:

subplot(m,n,k)

其意义是将一个图形窗口分为m×n个区域,m为行数,n为列数,k代表区域号。

利用subplot可以只在某一个或某几个区域画图而其它区域不画。

2)三维绘图

MATLAB具有很强的三维绘图功能,也是以图形函数的形式给出。

这里介绍几个常用的图形函数。

plot3用于绘制三维曲线或折线,与二维的plot相对应,其调用格式为:

plot3(x,y,z,选项)

图6.3-4用plot3函数绘制的三维螺旋线

例如,下面的程序:

t=0:

pi/100:

5*pi;

x=sin(t);

y=cos(t);

z=2*t;

plot3(x,y,z,'k')

绘制了三维坐标系中的螺旋线,如图6.3-4所示。

mesh函数用于生成三维网格图,其调用格式为:

mesh(x,y,z,c)

其中,c为颜色矩阵,一般可以省略。

例如,已知二次曲面方程为

,下面的程序利用mesh函数生成该方程的三维网格曲面:

[x,y]=meshgrid(-5:

0.25:

5);

z=3*x.^2-2*y.^2;

mesh(x,y,z)

程序中用到了函数meshgrid,它在程序中的作用是产生横纵坐标的区间均为-5~5,间隔为0.25的平面网格数据,“x.^2”表示对向量x中的每个元素求平方。

程序结果如图6.3-5所示。

图6.3-5三维网格图形

因篇幅所限,其它三维绘图功能不在这里作进一步详述,感兴趣者可利用MATLAB的联机求助命令进一步了解或参见有关文献资料。

6.3.6M文件与M函数

用MATLAB语句编写的文本文件称为M文件。

建立和编辑M文件可通过在MA

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2