MATLAB2.docx

上传人:b****6 文档编号:3920133 上传时间:2022-11-26 格式:DOCX 页数:30 大小:123.10KB
下载 相关 举报
MATLAB2.docx_第1页
第1页 / 共30页
MATLAB2.docx_第2页
第2页 / 共30页
MATLAB2.docx_第3页
第3页 / 共30页
MATLAB2.docx_第4页
第4页 / 共30页
MATLAB2.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

MATLAB2.docx

《MATLAB2.docx》由会员分享,可在线阅读,更多相关《MATLAB2.docx(30页珍藏版)》请在冰豆网上搜索。

MATLAB2.docx

MATLAB2

附录MATLAB软件简介[1、27]

 

§1MATLAB产生的历史背景

在20世纪70年代中期,CleveMoler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。

EISPACK是特征值求解的FORTRAN程序库,LINPACK是解线性方程的程序库。

在当时,这两个程序库代表矩阵运算的最高水平。

到20世纪70年代后期,身为美国NewMexico大学计算机系系主任的CleveMoler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序。

CleveMoler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(laboratory)两个英文单词的前三个字母的组合。

在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。

1983年春天,CleveMoler到Stanford大学讲学,MATLAB深深地吸引了工程师JohnLittle。

JohnLittle敏锐地觉察到MATLAB在工程领域的广阔前景。

同年,他和CleveMoler、SieveBangert一起,用C语言开发了第二代专业版。

这一代的MATLAB语言同时具备了数值计算和数据图示化的功能。

1984年,CleveMoler和JohnLithe成立了MathWorks公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。

在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。

一类是数值计算型软件,如MATLAB、Xmath、Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,如Mathematica、Maple等,这类软件以符号计算见长,能给出解析解和任意精度解,其缺点是处理大量数据时效率较低。

MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算、文字处理、可视化建模和实时控制能力,开发了适合多学科、多部门要求的新一代科技应用软件MATLAB。

经过多年的国际竞争,MATLAB已经占据了数值型软件市场的主导地位。

在MATLAB进入市场前,国际上的许多应用软件包都是直接以FORTRAN和C语言等编程语言开发的。

这种软件的缺点是使用面窄、接口简陋、程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。

MATLAB的出现,为各国科学家开发学科软件提供了新的基础。

在MATLAB问世不久的20世纪80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。

时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科、多种工作平台的功能强劲的大型软件。

在国外,MATLAB已经经受了多年考验。

在欧美等高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能。

在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。

§2MATLAB的语言特点

一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点。

正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。

MATLAB的最突出的特点就是简洁。

MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。

MATLAB给用户带来的是最直观、最简洁的程序开发环境。

以下简单介绍一下MATLAB的主要特点。

①语言简洁紧凑,使用方便灵活,库函数极其丰富。

MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

可以说,用MATLAB进行科技开发是站在专家的肩膀上。

具有FORTRAN和C等高级计算机语言知识的读者可能已经注意到,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。

例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。

在求解过程中,最麻烦的要算第二部分。

解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试都不容易。

即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。

解线性方程的程序用FORTRAN和C这样的高级语言编写至少需要好几十行。

再如用双步QR方法求解矩阵特征值,如果用FORTRAN编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。

以下为用MATLAB编写以上两个小程序的具体过程。

用MATLAB求解下列方程,并求矩阵A的特征值。

其中:

 

解为:

x=A\b;设A的特征值组成的向量为e,e=eig(A)。

可见,MATLAB的程序极其简短。

更为难能可贵的是,MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。

②运算符丰富。

由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。

③MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。

④语法限制不严格,程序设计自由度大。

例如,在MATLAB里,用户无需对矩阵预定义就可使用。

⑤程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

⑥MATLAB的图形功能强大。

在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。

MATLAB还具有较强的编辑图形界面的能力。

⑦MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。

由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

⑧功能强劲的工具箱是MATLAB的另一重大特色。

MATLAB包含两个部分:

核心部分和各种可选的工具箱。

核心部分中有数百个核心内部函数。

其工具箱又可分为两类:

功能性工具箱和学科性工具箱。

功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。

功能性工具箱能用于多种学科。

而学科性工具箱是专业性比较强的,如control、toolbox、signalprocessingtoolbox、communicationtoolbox等。

这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。

下表列出了MATLAB的核心部分及其工具箱等产品系列的主要应用领域。

MATLAB的工具箱及主要应用领域

工具箱名称

应用领域

MATLAB核心

Notebook

MATLABComplier

MATLABCMathLibrary

Simulink

SymbolicMath

SimulinkAccelerator

Chemometrics

Communication

ControlSystem

Finance

SystemIdentification

FuzzyLogical

High-orderSpectralAnalysis

工具箱名称

应用领域

ImageProcessing

ModelPredictiveControl

NGAFoundation

NeuralNetwork

MMLE3Identification

LMIControl

ModelPredictiveControl

QFTControlDesign

RobustControl

Spline

Statistics

DSPBlockset

Fixed-PointBlockset

NonlinearControlDesignBlockset

Real-timeWorkshop

RTWAdaExtention

Wavelet

PartialDifferentialEquation

Optimization

Stateflow

SignalProcessing

MuAnalysisandSynthesis

FrequencyDomainIdentificaion

Maptools

⑨源程序的开放性。

开放性也许是MATLAB最受人们欢迎的特点。

除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

§3基本功能

进入MATLAB之后,会看到一个MATLABCommandWindow,称为命令窗,它是最主要的窗口,既是键入命令也是显示计算结果的地方。

另外还有一个编程窗,专门用来编辑应用程序。

还有一个主窗口,用来记录已使用过的历史命令和已打开的目录,方便使用者查找。

如果绘图还会自动弹出一个绘图窗,专门用来显示绘制的图形。

MATLAB一般有3种进行计算的方法,第1种就如同使用计算器,直接输入数值和运算符,立即从屏幕上获得结果。

第2种先对变量赋值,然后再输入由变量构成的表达式,也可立即获得结果。

第3种,就是采用编程的方法来解决较复杂的,诸如含有判断、循环、迭代、递归等算法的较复杂的问题。

上述方法中,第2和第3包括了数组和矩阵运算,只要定义了数组和矩阵变量,就可以如同普通代数运算一样直接用变量进行数学运算,十分方便。

MATLAB提供的基本算术运算有:

加(+)、减()、乘(*)、除(/)、幂次方(^)。

MATLAB的关系和逻辑运算符与其他软件基本相同,仅列表加以说明:

符号

功能

符号

功能

=

赋值运算

&

逻辑与运算

==

关系运算,相等

|

逻辑或运算

不等于

-

逻辑非运算

<

小于

xor

逻辑异或运算

<=

小于等于

……

续行标志

>

大于

分行符,结果不显示

>=

大于等于

分行符,结果显示

%

注释标志

矩阵转置

.’

向量转量

MATLAB可以将计算结果以不同的精度输出,列表说明如下:

命令

说明

formatshort

默认显示,保留小数点后4位

formatlong

有效数字16位

formatlonge

有效数字16位加3位指数

formatshorte

有效数字5位加3位指数

formatbank

保留两位小数位

format+

只给出正、负

formatrational

以分数形式表示

formathex

16进制数

formatlongg

15位有效数

formatshortg

5位有效数

MATLAB对使用变量名称的规定:

(1)变量名称的英文大小写是有区别的(apple、Apple、AppLe三个变量不同)。

(2)变量的长度上限为19个字母。

(3)变量名的第一个字母必须是英文,随后可以掺杂英文字、数字或是下划线。

下表给出MATLAB所定义的特殊变量及其意义。

变量名

意义

help

在线帮助,如helpquit

who

列出所有定义过的变量名称

ans

默认的用来表示计算结果的变量名

eps

极小值=2.2204e-16

pi

inf

无穷大的数

nan

非数值

§4数组与矩阵

MATLAB特擅长数组(array)及矩阵(matrix)运算,而这两者基本运算的性质完全不同,数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。

数组多由一维元素构成,而矩阵中多维元素组成。

下面列表说明如何利用特殊函数创建矩阵。

函数符号

说明

zero(i,j)

创建i行j列的全零矩阵

ones(i,j)

创建i行j列的全1矩阵

eye(i,j)

创建i行j列对角线为1的矩阵

rand(i,j)

创建i行j列的随机矩阵

常用这样的语句来建立一维数组:

x=起始值:

步长:

终止值,例如x=0:

0.l:

l则可以生成从0开始,每次递增0.l,一直到1的11个数构成的一维数组x。

同样也可以用linspace(起始值,终止值,等分数)命令,例如运行x=linspace(0,l,50),则可以生成从0到1,等分成50等份的51个数组成的一维数组x。

若不给出等分数,则自动进行100等分处理。

数组的运算符号有以下几种:

十加、—减、*乘、./左除、.\右除、.^次方、.’转置

在数学建模中,许多运算都是以数组为对象,即是以数组的元素为对象。

因此除了+,这两个运算外,其余的运算符号(乘、除、次方)都要加上.来强调两个数组之间元素的运算,称为点乘、点除和点幂运算。

设a,b各代表两个不同的数组,a与b之间的运算是元素对元素的方式,则点乘、点除和点幂次方可用下面的表达式来说明:

 

§5简单绘图

MATLAB是基本的绘图命令有二维曲线绘图命令plot和三维曲线绘图命令plot3。

p1ot用来画x对y的二维曲线图,例如y=sinx,0≤x≤2。

则以下语句执行后可得到有关x和y的图形:

>>x=1inspace(0,2*pi,20);%设定x分别为0、2/20、2*2/20、3*

2/20、…2

>>y1=sinx,y2=cosx;%y1,y2分别是与x对应的正弦和余弦值

>>plot(x,y1,x,y2);%在同一坐标图上分别绘制正弦和余弦曲线

如果想分几次在同一坐标图上绘制不同的曲线,可使用hold命令:

>>holdon;%保持坐标图不变,后绘制的图形叠加在原图上

>>holdoff;%解除对原图的保持,将原图清除后再绘制新图

plot命令的基本格式是:

plot(x数组,y数组,‘颜色图标’),如需要在同一图中画多根曲线,只需依照此基本格式往后追加其他的x和y的数组即可。

其中颜色和图标的英文缩略符请参看下表:

参数

意义

参数

意义

r

红色

-

实线

g

绿色

——

虚线

b

蓝色

点线

y

黄色

—.

点划线

m

洋红色

o

圆圈

c

青色

x

叉号

w

白色

+

加号

k

黑色

s

正方形

*

星号

d

菱形

.

点号

还可以利用命令xlabel、ylabel、title等分别在x轴上、y轴上以及题头上加上文字说明。

grid命令用来在图形上添加或者删除网格线,它是一个切换命令,若第一次是添加,则再执行一次就是删除。

还有text和gtext命令,可用来在图中加上文字说明,用法如下:

>>text(x,y,'string')%x,y是文字安放的起始坐标,String是要添加的文字。

>>gtext('string')%在命令执行后,可用鼠标将文字拖放到图中的任何位置。

subplot命令用来画多个子图,它的命令格式是:

subplot(m,n,p),其中m,n表示一共有m行n列个子图,p是子图的图号,编号的规则是从左到右和从上到下,请看下例:

>>x=[0257101215172021];

>>y=2*x;

>>subplot(2,2,1),p1ot(x,y);%画左上角的l号图

>>subplot(2,2,2),semilogx(x,y);%x轴采用对数坐标画右上角的2号图

>>subplot(2,2,3),semilogy(x,y);%y轴采用对数坐标画左下角的3号图

>>subplot(2,2,4);loglog(x,y);%x和y轴都采用对数坐标画右下角的4

号图

下面给出了其他的二维绘图函数命令:

函数

意义

函数

意义

bar

直方图

fill

实心图

area

区域图

feather

羽毛图

errobar

图形加上误差范围

compass

罗盘图

polar

极坐标图

quiver

向量场图

hist

累计图

pie

饼图

rose

极坐标累计图

convhull

凸壳图

stairs

阶梯图

scatter

离散点图

stem

针状图

在绘图时若要控制绘图纵横轴的比例,可以用下表中的axis命令:

axis([xminxmaxyminymax])

分别以xmin、xmax和ymin、ymax来设定横轴和纵轴的下限及上限

axisauto

横轴及纵轴依照作图的数据自动设定,横轴及纵轴比例是4:

3

axissquare

横轴及纵轴比例是1:

1

axisequal

将横轴纵轴的比例尺度设成相同

axisxy

按正常第1象限的方式显示坐标

axisij

按第1象限的方式,但y轴递增的方向是由上到下

axisnormal

从equalsquare等方式中返回到正常状态

axisoff

将纵横轴取消

axison

恢复纵轴及横轴

zoom命令用来将图形放大或缩小,它的用法是:

>>zooon%开始放大图形,然后每按一次Enter键,图形就放大一定比例

>>zoomout%开始缩小图形,然后每按一次Enter键,图形就缩小一定比例

>>zoomoff%停止图形的缩放功能

§6三维绘图

plot3命令用来画一个三维的曲线,它的格式类似plot,只是增加了z方向的数据。

其基本用法是plot3(X,Y,Z,'linetype'),其中的linetype用来设定画线的符号和颜色,所填入的内容同§5一节介绍的一样,下面给出一个绘制三维曲线图的例子:

>>t=0:

pi/50:

10*pi;%给出t值的分布点

>>piot3(sin(t),cos(t),t)%绘出3维曲线图

>>title('Helix');%给出题头

>>xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')

%分别给3个轴加上标记

>>axisij;%改变图上的y轴及曲线的方向

如果要画一个三维曲面,则要用到meshgrid、mesh和surf命令。

先用meshgrid产生x-y平面的二维的网格数据,再由这个二维的网格求出一组相应的Z轴的数据,然后可进行三维曲面的绘制。

下面的例子可说明上述的绘图过程:

>>x=-7.5:

0.5:

7.5;y=x;%先产生x及y两个数组

>>[X,Y]=meshgrid(x,y);%再根据meshgrid形成二维的网格数据

>>R=sqrt(x.^2+Y.^2)+eps;%加上eps可避免当R在分母趋近于零时无法定义

>>Z=sin(R)./R;%求出z轴的数据

>>mesh(X,Y,Z);%将z轴的变化值以网格方式画出

>>surf(X,Y,Z);%将z轴的变化值以曲面方式画出

>>title('Meshplot')

与三维绘图有关的还有等高线图,相关命令为contour,contour3。

contour是将等高线图以二维图表示,其命令格式有两种:

一种是contour(Z)或者是contour(Z,n),其中Z是一个二维矩阵,而n为希望画出的等高线的线数(如果缺省则以自动方式设定);另一种则是contour(X,Y,Z)或contour(X,Y,Z,n),其中X,Y,Z代表x,y,z轴的数据。

contour3则是将等高线以三维图表示,可利用上例的结果,试画出两种等高线:

>>contour(X,Y,Z,8)%以二维图的方式做出线数为8的等高线图

>>contour3(X,Y,Z,8)%以三维图的方式做出线数为8的等高线图

§7MATLAB函数

MATLAB之所以运算功能强大,重要原因之一就是它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑/选择函数如if-else等,还有用来模拟随机发生事件的随机函数。

虽然MATLAB提供了数百种内建函数,但也不是包罗万象,为了解决这个问题,MATLAB提供了十分方便的自定义函数(自建函数)的强大功能。

l)常见数学函数

MATLAB提供了许多内建函数,如对数函数、三角函数、多项式函数等。

使用函数需注意,函数名要放

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

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1