基础知识1.docx

上传人:b****6 文档编号:7585601 上传时间:2023-01-25 格式:DOCX 页数:25 大小:278.80KB
下载 相关 举报
基础知识1.docx_第1页
第1页 / 共25页
基础知识1.docx_第2页
第2页 / 共25页
基础知识1.docx_第3页
第3页 / 共25页
基础知识1.docx_第4页
第4页 / 共25页
基础知识1.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基础知识1.docx

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

基础知识1.docx

基础知识1

概述

MATLAB是世界流行的优秀科技应用软件之一。

具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。

自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1996年发布5.0版,1999年发布5.3版。

目前发布的为6.5版。

MATLAB有专业和学生版之分。

二者功能相同,但计算规模和计算难度有差别。

在国内外,已有许多高等院校把MATLAB列为本科生、研究生必须掌握的基本技能。

我校自1999年列为研究生选修课程。

而且有很多教师、研究生把它作为进行科研的重要工具。

国内关于MATLAB的书籍很多,如:

《精通MATLAB5.3》张志涌等编著北京航空航天大学出版社,2000.8

《科学计算语言MATLAB简明教程》杜藏等编著南开大学出版社,1999.6

《精通MATLAB5》张宜华编写清华大学出版社,1999.6

《精通MATLAB--综合辅导与指南》DuaneHanselman、BruceLittlefield编著李人厚等译较西安交通大学出版社,1998.1

等等

本课程主要介绍MATLAB5.3的基本功能和基础知识。

至于其包含的多种工具箱,如仿真工具箱、解非线性方程(组)工具箱、优化工具箱等,应通过本学习后,结合各专业自己进一步学习和使用。

第1章MATLAB基础

1.1源文件(M-文件)

分为两类:

函数文件和非函数文件。

都用扩展名.M

1.1.1函数文件

格式1(无返回值函数)

function函数名(输入表)%称为函数头

函数体

例如:

functionbox(opt_box);

%BOXAxisbox.

%BOXONaddsaboxtothecurrentaxes.

%BOXOFFtakesifoff.

%BOX,byitself,togglestheboxstate.

%

%BOXsetstheBoxpropertyofthecurrentaxes.

%

%SeealsoGRID,AXES.

%Copyright(c)1984-98byTheMathWorks,Inc.

%$Revision:

1.5$$Date:

1997/11/2123:

32:

59$

ax=gca;

if(nargin==0)

if(strcmp(get(ax,'Box'),'off'))

set(ax,'Box','on');

else

set(ax,'Box','off');

end

elseif(strcmp(opt_box,'on'))

set(ax,'Box','on');

elseif(strcmp(opt_box,'off'))

set(ax,'Box','off');

else

error('Unknowncommandoption.');

end

格式2(有返回值函数)

function[输出表]=函数名(输入表)

函数体

其中:

[输出表]是函数的返回值,若输

出表中只有一项,则方括号可省略。

例如:

functionaObjH=getobj(HG)

%GETOBJRetrieveScribeObjectfromHandleGraphicshandle

%Copyright(c)1984-98byTheMathWorks,Inc.

%$Revision:

1.8$$Date:

1998/06/0322:

23:

48

try

ud=getappdata(HG,'ScribeObjectData');

aObjH=ud.HandleStore;

catch

aObjH=[];

end

注意:

·函数名必须与定义它的文件名主名相同

·函数体是对各参数、局部变量和全局变量的操作。

函数体内必须对输出表中的变量赋值

·函数头与函数体之间可以有多个以符号"%"开始的注释行,说明函数的功能和使用方法。

当执行命令help<文件名>时,将显示这些注释,直到遇到第一个非注释行为止。

但是,函数体内包含的注释不能被Help命令显示。

·函数体内最常用的两个特殊变量:

NARGIN—表示输入表中的参数个数

NARGOUT—表示输出表中的参数个数

1.1.2非函数文件

非函数文件是无函数头的M文件,由若干命令和注释构成。

如:

%Filenameisasine.m

x=0:

0.1:

2*pi;y=sin(x);

plot(x,y)

%可包含汉字注释

1.1.3M-文件的操作

1、建立新M-文件

在命令窗中选File/New/M-file命令,打开编辑窗口(4.2c中需事先指定文本编辑器,5.0以后的版本已有内置文本编辑器)

可同时打开多个M文件

2、保存M-文件

在文本编辑器中选File/SaveAs…命令

3、编辑M-文件

在命令窗口/文本编辑器中选File/Open…命令

4运行M-文件

在文本编辑器中选Tools/Run命令

或在命令窗口使用命令行调用,格式为:

文件名

1.2MATLAB命令窗口

1.2.1启动MATLAB

双击快捷方式图标或从“开始”菜单序列中选择。

1.2.2MATLAB命令窗口(V5.3)

主要菜单命令和工具按钮:

1)File/SetPath…或工具按钮

用于设置搜索路径

搜索文件或变量名的顺序

工作空间中

内部函数所在目录中

当前目录中

设定的搜索路径中

(1)在PathBrowser窗口中选Path/AddtoPath命令可增加设定的搜索路径。

(2)在PathBrowser窗口中选Path/RemovefromPath命令可删除设定的搜索路径。

2)File/Preference…设置工作参数

设置通用项目

设置命令窗口字体

设置复制选项

1.2.3命令行

一行可写入一个或多个命令,命令之间用逗号或分号隔开,如果命令尾带分号将不显示该命令的执行结果;

还可有续行(4.2c行末为…,5.3为自由格式);

最后用回车提交命令。

例如:

x=[1,2,3,4,5,6;

2,3,4,5,6,7;

9,7,5,3,1,0];

y=x.*x;

plot(x,y)

3)命令窗口常用键:

↑键—显示前个命令

↓键—显示后个命令

Esc键-取消输入

Ctrl+x—剪切

Ctrl+c—复制

Ctrl+v—粘贴

1.2.4MATLAB的帮助系统

·帮助命令:

·help文件名或函数名

·帮助菜单:

·演示命令:

demo

1.2.5MATLAB的NoteBook

MATLAB借用Word的文本编辑功能,并允许在文档内嵌入MATLAB命令,可以很自然地将其运行结果(数值或/和图形)嵌入文档之中。

注意:

V4.2C-V5.2只能在Word95中使用,V5.3可在Word95/97中使用,V6.x可在Word2000中使用。

要在Word95/97中使用MATLABV5.3的NoteBook功能,应在MATLAB安装后,在MATLAB中进行设置,即拍入命令:

NOTEBOOK–SETUP

将显示如下信息:

WelcometotheutilityforsettinguptheMATLABNotebook

forinterfacingMATLABtoMicrosoftWord

ChooseyourversionofMicrosoftWord:

[1]MicrosoftWordforWindows95(Version7.0)

[2]MicrosoftWord97

[3]Exit,makingnochanges

下面以选择WORD97为例说明。

MicrosoftWordVersion:

2

Youwillbepresentedwithadialogbox.PleaseuseittoselectyourcopyoftheMicrosoftWord97executable(winword.exe).

Pressanykeytocontinue...

Youwillbepresentedwithadialogbox.PleaseuseittoselectaMicrosoftWordtemplate(.dot)fileinoneofyourMicrosoftWordtemplatedirectories.Wesuggestthatyouspecifyyournormal.dotfile.

Pressanykeytocontinue...

Notebooksetupiscomplated.

设置完成后,运行Word97,在"新建"对话框中将出现m-book.dot模板。

选中它,单击"确定"按钮,或者选择"文件"菜单中的NewM-book命令,即可编辑M-book文件,同时,菜单栏中将出现Notebook菜单。

其中:

DefineInputCell或DefineCalcZone命令用于定义MATLAB命令区;

EvaluateCell或EvaluateCalcZone命令用于计算插入点所在的MATLAB命令区。

注意:

如果在定义MATLAB命令区后不能正常显示汉字,可指定为宋体后再继续进行其它编辑操作。

1.3数据表示

1.3.1数据类型

有整型、实型、复型、字符串四种类型

1、常数

1)整型常数:

-10010

2)实型常数:

0.3.33.-3914e-2

(表示范围约10±308)

3)复型常数:

1+2i3.5-6.18i

1+3.2i

4)字符串常数:

'MATLAB'

'Ican''tdo.'

(两个连写的单撇号表示一个单撇号)

注意:

没有逻辑型,但与C语言那样,非0为真,0为假。

2、变量

变量用标识符表示(字母打头、字母、数字、下划线组成,长度≤19)。

可以合法出现而定义。

区分大小写字母,以当前值定义其类型。

3、函数名

函数名用标识符表示。

4、特殊常数

ANSwer、EPSilon(10-16)、PI、NaN(即0/0)、INFinite(∞)、REALMAX、REALMIN、NARGIN、NARGOUT等。

1.3.2数组

分为行向量、列向量、矩阵。

普通变量可看成1×1数组。

1、创建数组的基本方法

1)直接列表定义数组

变量=[元素值1元素值2…元素值n]

变量=[元素值1,元素值2,…,元素值n]

变量=[行1各元素;行2各元素;…;行n各元素]

例如:

x=[1234567890]

y=[1,2,3,4,5,6,7,8,9,0]

z=[1,2,3,4,5;2,3,4,5,6,7]

2)域表定义数组

变量=初值:

增量:

终值|初值:

终值

变量=(初值:

增量:

终值)*常数

例如:

x=0:

0.02:

10

y=1:

80

z=(1:

0.1:

7)*10e-5

3)利用函数定义数组

变量=linspace(初值,终值,元素个数)

如:

x=linspace(0,pi,11)的结果为:

x=

Columns1through7

00.31420.62830.94251.25661.57081.8850

Columns8through11

2.19912.51332.82743.1416

变量=logspace(初值指数,终值指数,元素个数)

其中:

初值元素为10初值指数

终值元素为10终值指数

第i个元素为

如x1=logspace(0,2,10)的结果为:

x1=

Columns1through7

1.00001.66812.78264.64167.742612.915521.5443

Columns8through10

35.938159.9484100.0000

2、数组的访问(一维)

数组名表示全体元素

数组名(k)表示第k元素

数组名(k1:

k2)表示第k1到k2元素

数组名(k1:

k2:

k3)表示第k1、k1+k2、

k1+2k2,…,到k3元素

数组名([k1,k2,…,kn])

表示第k1,k2,…,kn元素

其中:

kp也可为初值:

终值或初值:

增量:

终值的形式。

如:

a=1:

2:

151

则:

3

a

(2)5

a(3:

5)7

a9

a(5:

-1:

2)11

a([2,6,8])13

15

3、数组的基本运算

设有数组a1×n,b1×n,x1×m,gm×n,hn×m,fm×n变量或常量c1,c2,…,ck

1)一维数组拼接

u=[ax]结果为[a1…anx1…xm]

或u=[ac1c2…ck]

结果为[a1…anc1c2…ck]

2)转置

a.'点转置

a'共轭转置

3)纯量与数组的算术运算

aωc1

或c1ωa

其中ω可为+、-、*

结果为[a1ωc1a2ωc1…anωc1]

或[c1ωa1c1ωa2…c1ωan]

4)数组加(减)

使两数组的对应各元素相加(减)

a+b结果为[a1+b1a2+b2…an+bn]

a–b结果为[a1–b1a2–b2…an–bn]

(a与b的维数必须相同)

5)数组点乘

使两数组的对应元素相乘

a.*b结果为

[a1*b1a2*b2…an*bn]

(a与b的维数必须相同)

6)数组点正除(右除)

使两数组的对应元素正除

a./b结果为:

(a、b维数必须相同)

7)数组点反除(左除)

a.\b

结果为:

显然:

a./b=b.\a

(a、b维数必须相同)

8)数组的幂运算

a.^c1结果为[a1^c1a2^c1…an^c1]

c1.^a结果为[c1^a1c1^a2…c1^an]

a.^b结果为[a1^b1a2^b2…an^bn]

以上8种基本运算中,除拼接外,其它均适于二维数组(两个二维数组必须具有相同的维数)。

显然,两个二维数组进行拼接列时,必须有相同的行数,拼接行时必须有相同的列数。

例如:

g'g.'

cωg或gωcω为+、–、*

g+hg–h

g.*h

g./hg.\h

g.^hg.^c1c.^g

而且可以进行混合运算。

如:

2*g–h

(g.^2).^(h–1)

4、1数组和0数组

1)1数组

ones(n)建立n×n全为1的数组

ones(r,c)建立r行c列的1数组

2)0数组

zeros(n)建立n×n全为0的数组

zeros(r,c)建立r行c列的0数组

5、数组操作

1)二维数组的访问(除一维数组访问形式外)

g(r,c)访问gr,c元素

g(r,:

)访问g中第r行各元素

g(:

c)访问g中第r列各元素

g(i)访问g按列排列后的第i个元素

2)按列拉长

即把矩阵按列拉成向量(列向量)

g(:

3)插入新元素而扩展

如:

A=[1,2,3;4,5,6;7,8,9];

插入:

A(2,6)=10

插入后,A变成3行6列矩阵,未定义的新元素值内定为0。

即:

4)重排

如对A=[1,2,3;4,5,6;7,8,9];

B=A(3:

–1:

1,:

或B=A(3:

–1:

1,1:

3)

将把A的各列元素倒排生成B

B=

789

456

123

5)提取

如:

A(:

[13])%提取A的第1、3列

A(1:

2,2:

3)%提取A中前两行的后两列

设C=[13]

则:

A(C,C)%提取A第1、3行中第1、3列各元素,效果与A([13],[13])相同.

6)置空(删去某行或某列)

如:

A=[1,2,3;4,5,6;7,8,9];

B=A;

B(:

2)=[];%将B的第2列删掉

B=A;

B(1,:

)=[];%删去B的第1行

7)置零

如:

A(2,:

)=[0,0,0]

将把A的第2行置零。

注意:

不能写成A(2,:

)=0

8)拼接

如:

A=[1,2,3;4,5,6;7,8,9];

B=[1,4,7];

B(3:

4,:

)=A(2:

3,:

);

将把A的第2、3行作为B的第3、4行

C=[AB(1:

2,:

)']

将把B的前2行转置后接在A的右侧生成C。

D(1:

6)=A(:

2:

3)

提取A的第2、3列生成一个行向量D。

9)数组的规模

s=size(A)

生成行向量s,值为A的行数,列数

[r,c]=size(A)

返回A的行数r,列数c

r=size(A,1)返回A的行数r

c=size(A,2)返回A的列数c

10)用逻辑数组操作一个数组

对数组的逻辑运算产生逻辑数组,且结果中用1表示真,0表示假

如:

x=–3:

3

x=–3–2–10123

t=abs(x)>1%t为逻辑数组

t=1100011

y=x(t)%提取t中为真对应的x元素

y=–3–223

对数组有以下的逻辑运算:

●比较运算符:

<<===>>=~=

两数组对应元素相比较,或一个数组的各元素与一个纯量相比较,结果为逻辑数组

显然相比较的数组必须具有相同大小

●逻辑运算符

&(与)|(或)

~(非)XOR(异或)

两相同大小的数组进行&(与)、|(或)、XOR(异或)运算是对应元素的运算(也允许一个数组与一纯量进行这些运算)

对任一数组都可以进行~(非)运算

如:

A&B

A|B

XOR(A,B)

~A

A&2

11)矩阵乘

设gm×n和hn×m,则

g*h结果为m×m矩阵

h*g结果为n×n矩阵

注意:

矩阵乘(*)与数组乘(.*)的区别

12)矩阵除

矩阵正除(右除):

A/B

矩阵反除(左除):

A\B

由于在MATLAB中是根据关系式:

B\A=(A'/B')’

定义和设计右除的,故以下仅讨论左除。

A\B相当于A–1×B

在MATLAB中,若A为方阵(n×n),B为n个元素的列向量,则x=A\B表示用高斯消元法解线性代数方程组Ax=B。

若A是奇异(病态)或接近奇异的,则给出警告信息。

若A为m×n矩阵(m≠n),B为m个元素的列向量,若m>n,则x=A\B是超定方程组的最小二乘解。

若m

13)矩阵乘方

☆矩阵的标量乘方A^p

当p为整数时,A应为方阵:

p>0则A^p=A*A*…*A

p次

p=0则A^p=A^0

等于与A同维的单位矩阵

p<0则A^p=inv(A^abs(p))

即求A自乘|p|次后的逆矩阵

当p为非整数时,A应为方阵,若存在特征值分解AV=VD(D为对角阵),那么定义:

Ap=VDpV–1

如:

A=[1,2,3;4,5,6;7,8,9];

Ap=A^0.3的结果为:

Ap=

0.6962+0.6032i0.4358+0.1636i0.1755-0.2759i

0.6325+0.0666i0.7309+0.0181i0.8292-0.0305i

0.5688-0.4700i1.0259-0.1275i1.4830+0.2150i

☆标量的矩阵乘方p^A

定义为:

若存在特征值分解AV=VD,则

如:

A=[1,2,3;4,5,6;7,8,9];

0.3^A的结果为:

ans=

2.93420.4175-1.0993

-0.02780.7495-0.4731

-1.9898-0.91841.1531

注意:

矩阵的矩阵乘方,即A^B无意义

1.3.3字符串

字符串是用单引号括起来的字符序列。

在MATLAB中,可以把一个字符串看成一个由各字符组成的行向量。

这样,前述对数组的某些运算就适用于字符串了。

如:

t='abcdefghijklmnopqrstuvwxyz'

s='1234567890'

提取:

u=t(5:

11)%t中第5到11字符子串

例排:

u=t(20:

–1:

6)

转置:

u=t'%u变为列向量

拼接:

u=[ts]

当每行字符个数均相同时还可构成字符矩阵,如:

u=['abcde'

'12345'

'uvwxy']

u可看成3行5列的矩阵(数组)

对字符串有多种函数可以调用,如:

abs(s)%将串s中各字符变为ASCII码值

delblank(s)%删去s的尾部空格

dec2hex(k)%将十进制数k变为十六进制字符串

findstr(s1,s2)%查找s2在s1中的位置(全体)

hex2dec(s)%将十六进制字符串变为十进制数

Strcmp(s1,s2)%比较串s1和s2,二者相等返回1,否则为0

Strrep(s,s1,s2)%用s2替换s中全体s1等等.

 

1.4数据的输出格式

在MATLAB中,数据的存储和运算都以双精度进行,但输出结果可指定格式。

指定输出格式的方法有两种:

1.4.1菜单命令法

V5.3中,选择File中的Preferences命令,在General标签中设置。

(V4.2C中,从Options菜单中选择NumericFormat的子菜单项)

其中:

☆SHORT按5位小数(含小数点、下同)输出

LONG按15位小数(含小数点、下同)输出

SHORTe按5位小数、科学记数方式输出

LONGe按15位小数、科学记数方式输出

HEX按16进制输出

+表示大矩阵时使用,+、–、空格分别表示正数、负数和零(不显示数)

RAT近似有理数(分数)表示

BANK(金融)元、角、分表示

COMPACT数据之间无空行

☆LOOSE数据之间有空行

1.4.2使用Format命令法

格式:

Format格式串

其中:

格式串同前述各项

如:

formatlonge

5/3

ans=

1.66666666666667e+000

formatrat

0.75

ans=

3/4

 

CHAR1END

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

当前位置:首页 > 解决方案 > 营销活动策划

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

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