matlab使用手册.docx

上传人:b****7 文档编号:26670736 上传时间:2023-06-21 格式:DOCX 页数:35 大小:135.79KB
下载 相关 举报
matlab使用手册.docx_第1页
第1页 / 共35页
matlab使用手册.docx_第2页
第2页 / 共35页
matlab使用手册.docx_第3页
第3页 / 共35页
matlab使用手册.docx_第4页
第4页 / 共35页
matlab使用手册.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

matlab使用手册.docx

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

matlab使用手册.docx

matlab使用手册

附录

MATLAB简介

这里介绍MATLAB一些入门知识,包括MATLAB桌面和窗口,MATLAB命令格式、数据格式、数据文件和变量管理,MATLAB的数组和矩阵运算,MATLAB的字符串、元胞和结构等数据类型,MATLAB的程序设计方法,MATLAB作图方法在线帮助的使用和程序文件和目录的管理等。

表一MATLAB的基本命令

主题词

含义

主题词

含义

format

设置数据显示格式

feval

函数求值

who

显示变量名

input

提示输入

whos

显示变量信息

disp

输出

clear

清除内存变量

tic

启动秒表

save

保存工作变量到文件

toc

时间读数(秒)

load

从文件装载变量

help

帮助

linspace

区间等分

lookfor

查找

length

获取数组长度

type

列程序清单

size

矩阵大小

which

查找文件目录

max

最大值

double

双精度

min

最小值

str2num

字符串转化为数值

sum

求和

num2str

数值转化为字符串

find

条件检索

一、MATLAB桌面

启动MATLAB后,就进入MATLAB的桌面,图1为MATLAB6.1的默认(Default)桌面。

第一行为菜单栏,第二行为工具栏,下面是三个最常用的窗口。

右边最大的是命令窗口(CommandWindow),左上方前台为发行说明书窗口(Launchpad),后台为工作空间(Workspace),左下方为命令历史(CommandHistory)后台为当前目录(CurrentDirectory)。

1.窗口

(1)命令窗口

该窗口是进行MATLAB操作最主要的窗口。

窗口中“>>”为命令输入提示符,其后输入运算命令,按回车键就可执行运算,并显示运算结果.。

图1

(2)发行说明书窗口

发行说明书窗口是MATLAB所特有的,用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。

(3)工作空间

在默认桌面,位于左上方窗口前台,列出内存中MATLAB工作空间的所有变量的变量名、尺寸、字节数。

用鼠标选中变量,击右键可以打开、保存、删除、绘图等操作。

(4)当前目录

在默认桌面,位于左下方窗口后台,用鼠标点击可以切换到前台。

该窗口列出当前目录的程序文件(.m)和数据文件(.mat)等。

用鼠标选中文件,击右键可以进行打开、运行、删除等操作。

(5)命令历史(CommandHistory)

该窗口列出在命令窗口执行过的MATLAB命令行的历史记录。

用鼠标选中命令行,击右键可以进行复制、执行(EvaluateSelection)、删除等操作。

除上述窗口外,MATLAB常用窗口还有编程器窗口、图形窗口等。

二、数据和变量

1.表达式

在命令窗口作一些简单的计算,就如同使用一个功能强大的计算器,使用变量无须预先定义类型。

例如,设球半径为r=2,求球的体积

>>r=2%表达式将2赋予变量r

r=%系统返回r的值

2

>>v=4/3*pi*r^3%pi为内置常量

,乘方用^表示

v=

33.5103

几个表达式可以写在一行,用分号(;)或逗号(,)分割,用分号(;)使该表达式运算结果不显示,而逗号(,)则显示结果。

也可以将一个长表达式分在几行上写,用三点(…)续行。

若需要修改已执行过的命令行,可以在命令历史中找到该命令行复制,再粘贴至命令窗口修改。

也可以直接使用键盘↑↓调出已执行过的命令行修改。

2.数据显示格式

MATLAB默认的数据显示格式为短格式(short):

当结果为整数,就作为整数显示;当结果是实数,以小数点后四位的长度显示。

若结果的有效数字超出一定范围,以科学计数法显示(如3.2000e-006表示

)。

数据显示格式可使用命令Format改变。

例如:

>>formatlong;v%长格式,16位

v=

33.51032163829112

>>formatshort;v%短格式

v=

33.5103

>>formatrational;v%有理格式,近似分数

v=

6501/194

3.复数

MATLAB中复数可以如同实数一样,直接输入和计算。

例如:

>>a=1+2i;b=5-4*i;c=a/b

c=

-0.0732+0.3415i

4.预定义变量

MATLAB有一些预定义变量(表1),启动时就已赋值,可以直接使用,如前我们使用的圆周率pi和虚数单位i.

表1常用预定义变量

变量名

说明

i或j

虚数单位

pi

圆周率3.14159…

eps

浮点数识别精度2^(-52)=

realmin

最小正实数

realmax

最大正实数

inf

无穷大

NaN

没有意义的数

预定义变量在工作空间观察不到。

如果预定义变量被用户重新赋值,则原来的功能暂不能使用。

当这些用户变量被清除(clear)或MATLAB重新启动后,这些功能得以恢复。

5.用户变量

MATLAB变量名总以字母开头,以字母、数字或下划线组成,区分大小写,有效字符长度为63个。

如A,a,a1,a_b都是合法的,且a与A表示不同变量。

在CommandWindow中使用的变量一旦被赋值,就会携带这个值存在于工作空间,直到被清除或被赋予新的值。

ans是系统一个特别的变量名。

若一个表达式运算结果没有赋予任何变量,系统自动用ans存放答案。

例如:

>>A=5+4i;b=5-4*i;B=1;A*b%没有定义A*b的输出变量

ans=

41%ans来接受计算结果,注意这是大写A与小写b的乘积,尽管我们可以使用工作空间来查询和清除变量,但使用下列命令方式更快捷:

>>whos%查询Workspace中的变量列表

NameSizeBytesClass

A1x116doublearray(complex)

B1x18doublearray

a1x116doublearray(complex)

ans1x18doublearray

b1x116doublearray(complex)

c1x116doublearray(complex)

Grandtotalis6elementsusing80bytes

>>A%查询变量A的值

A=

5.0000+4.0000i

>>clearA%清除变量A

>>A%再查询A的值,已经不存在了

Undefinedfunctionorvariable'A'.

>>clear%清除Workspace中所有变量

>>whos%Workspace中已没有任何变量了

三、数组和矩阵运算

MATLAB基本数据单元是无需指定维数的数组。

数组运算是MATLAB最鲜明的特点,一方面可以使得计算程序简明易读,另一方面可以提高计算速度。

1.数组的输入

最常用的数组是双精度数值数组(doublearray)。

一维数组相当于向量,二维数组相当于矩阵,一维数组可以视为二维数组的特例。

二维数组的第一维称为“行”,第二维称为“列”。

MATLAB数组无需预先定义维数。

直接输入数组的元素,用中括号([])表示一个数组,同行元素间用空格或逗号分隔,不同行间用分号或回车分隔,例如:

>>clear;a=[1,2,3;4,5,6;7,8,9]

a=

123

456

789

>>a=[123%这种方式特别适用于大型矩阵

456

789]

a=

123

456

789

对于等差数列构造的一维数组,可用冒号运算生成,也可用函数linspace生成。

>>b=0:

3:

10%初值:

增量:

终值

b=

0369

>>b=0:

10%增量为1可省略

b=

012345678910

>>b=10:

-3:

0%递减

b=

10741

>>b=linspace(0,10,4)%将区间[0,10]等分为4-1=3份

b=

03.33336.666710.0000

>>length(b)%查询b的长度

ans=

4

>>b(3)%查询b的第三个元素

ans=

6.6667

>>b([1,end])%查询b的首和尾元素

ans=

010

二维数组元素双下标编址按通常方式,单下标编址按列排序。

>>size(a)%查询数组a的尺寸

ans=

33

>>a(3,2),a(6)

ans=

8

ans=

8

>>c=a([13],[23])%提取a的第一、第三行和第二、第三列(分块矩阵)

c=

23

89

>>d=a(2,:

)%提取a的第二行

d=

456

>>a(:

)%将a所有元素按单下标顺序排为列向量

ans=

1

4

7

2

5

8

3

6

9

一些特殊的二维数组可以用函数产生,例如:

>>a=zeros(2,4)%生成2行4列零矩阵

a=

0000

0000

>>b=ones(1,4)%生成1行4列1矩阵

b=

1111

>>c=[a;b]%拼接

c=

0000

0000

1111

>>c(2,1)=100%修改部分元素

c=

0000

100000

1111

>>reshape(c,2,6)%按2行6列重排矩阵元素

ans=

010010

10001001

注意:

数组下标对应矩阵的行和列,编址一律从1开始,不能用0.

矩阵输入也可用“load”命令从外部数据文件导入

2.数组运算

数组运算是指数组对应元素之间的运算,也称点运算。

矩阵的乘法、乘方和除法有特殊的数学含义,并不是数组对应元素的运算,所数组乘法、乘方和除法的运算符前特别加了一个点。

特别要区分数组运算在乘法、乘方和除法上的意义和表示上与矩阵运算的不同。

表2数组运算符

运算

符号

说明

数组加与减

A+B与A-B

对应元素之间加减

数乘数组

k*A或A*k

k乘A的每个元素

数与数组加减

k+A或k-A

k加(减)A的每个元素

数组乘数组

A.*B

点运算只有点乘、点乘方、点除三个,表示对应元素之间的运算;(.*)是一个整体,点(.)不能漏掉,(.)和(*)之间也不能有空格

数组乘方

A.^k,k.^A

数除以数组

k./A

数组除法

左除A.\B,右除B./A

>>clear;A=[1-1;02];B=[01;1-1];

>>A.*B%注意不是A*B

ans=

0-1

0-2

>>A.\B,A./B

Warning:

Dividebyzero.

ans=

0-1.0000

Inf-0.5000

Warning:

Dividebyzero.

ans=

Inf-1

0-2

>>A.^2

ans=

11

04

>>1./A

Warning:

Dividebyzero.

ans=

1.0000-1.0000

Inf0.5000

3.矩阵运算

矩阵是一个二维数组,所以矩阵的加、减、数乘等运算与数组运算是一致的。

但是有两点需要注意:

(1)对于乘法、乘方和除法等三种运算,矩阵运算与数组运算的运算符及含义不同:

矩阵运算按线性变换定义,使用通常符号;数组运算按对应元素运算定义,使用点运算符;

(2)数与矩阵加减、矩阵除法在数学上是没有意义的,在MATLAB中为简便起见,定义了这两类运算,其含义见表3.

表3矩阵运算符

运算

符号

说明

转置

A'

加与减

A+B与A-B

同数组运算

数乘矩阵

k*A或A*k

同数组运算

矩阵乘法

A*B

矩阵乘方

A^k

数与矩阵加减

k+A与k-A

k+A等价于k*ones(size(A))+A

矩阵除法

左除A\B,右除B/A

它们分别为矩阵方程AX=B和XA=B的解

>>A=[12;34];B=[43;21];

>>100+A

ans=

101102

103104

>>A*B,A.*B%注意矩阵运算和数组运算的区别

ans=

85

2013

ans=

46

64

>>A\B,B/A,A.\B,B./A%注意矩阵运算和数组运算的区别

ans=

-6.0000-5.0000

5.00004.0000

ans=

-3.50002.5000

-2.50001.5000

ans=

4.00001.5000

0.66670.2500

ans=

4.00001.5000

0.66670.2500

4.数学函数

数组的数学函数也是按每个元素的运算,使用通常的函数符号,常用数学函数见表4

表4数学函数

函数

意义

函数

意义

sin

正弦

fix

向0取整

cos

余弦

mod

模余

tan

正切

rem

除法余数

cot

余切

abs

绝对值(模)

asin

反正弦

exp

指数函数

acos

反余弦

log

自然对数

sqrt

开方

log10

以10为底的对数

>>A=[4-1;32];

>>B=exp(A)

B=

54.59820.3679

20.08557.3891

>>C=fix(B)

C=

540

207

>>D=sin(C)

D=

-0.55880

0.91290.6570

>>E=log(D)

Warning:

Logofzero.

E=

-0.5820+3.1416i-Inf

-0.0911-0.4201

5.关系与逻辑运算

MATLAB的关系运算和逻辑运算符都是对于元素的操作,其结果是特殊的逻辑数组(logicalarray)表5,“真”用1表示,“假”用0表示,而逻辑运算中,所有非零元素作为1(真)处理。

表5关系运算和逻辑运算

运算符

含义

运算符

含义

<

小于

&

<=

小于等于

|

>

大于

~

>=

大于等于

all

==

等于

any

~=

不等于

>>A=-2:

4,B=4:

-1:

-2

A=

-2-101234

B=

43210-1-2

>>A>B

ans=

0000111

>>A==B

ans=

0001000

>>A&B%逻辑运算中,所有非零元素作为1(真)处理

ans=

1101011

>>A|B

ans=

1111111

>>find(abs(A)>=2)%返回绝对值大于或等于2的元素的下标

ans=

1567

>>any(abs(A)>5)%若存在绝对值大于5的元素,返回1

ans=

0

>>all(abs(A)>5)%若所有元素绝对值大于5,返回1

ans=

0

四、字符串、元胞和结构

除数值(double)以外,常用的数据类型还有字符(char)、元胞(cell)和结构(structure),由此进一步组成字符数组(chararray)、元胞数组(cellarray)和结构数组(structurearray).

1.字符串

MATLAB字符串用单引号对来标识,其数据类型为字符数组。

>>a1='Helloeveryone'

a1=

Helloeveryone

>>a2='各位好'%注意单引号,不是双引号

a2=

各位好

>>a=[a1,'.',a2,'.']%字符串拼接

a=

Helloeveryone.各位好.

>>size(a)

ans=

119%共19个字符

>>double(a)

ans=

Columns1through8

7210110810811132101118

Columns9through16

1011141211111101014647351

Columns17through19

529234781146%中文ASCII码很大

>>a=char(ans)

a=

Helloeveryone.各位好.

数字字符串与数值之间也可以用num2str和str2num转换。

一个数组的元素要么都是数值,要么都是字符串,数值转换后可以与字符串出现在同一数组中。

>>a=12;b=sqrt(a);

>>['a=',num2str(a),',a的开方=',num2str(b)]

ans=

a=12,a的开方=3.4641

MATLAB命令可以定义成一个字符串,使用eval可以使该字符串所表达的MATLAB命令得到执行。

>>fun='x.^2.*sin(x)';

>>x=1;eval(fun)

ans=

0.8415

>>x=1:

3;eval(fun)

ans=

0.84153.63721.2701

2.元胞和结构

不管是数值数组还是字符数组,其数据结构必须是整齐的。

首先数值和字符不能混合,其次小数组拼接成大数组时,其尺寸(size)必须相符(agree)。

例如:

>>A=['first';'second']%错误

Errorusing==>vertcat

Allrowsinthebracketedexpressionmusthavethesame

numberofcolumns.

将不同类型、不同尺寸的数组,加大括号({}),可构成一个元胞。

几个元胞可以构成元胞数组。

>>Ac1={'first';1:

3};Ac2={'second';[12;34]};

>>Ac=[Ac1,Ac2]

Ac=

'first''second'

[1x3double][2x2double]

>>size(Ac)

ans=

22

>>Ac(2,1)%小括号,查询Ac的第二行第一列元素

ans=

[1x3double]

>>Ac{2,1}%大括号,查询Ac的第二行第一列元素的具体内容

ans=

123

一个结构通过“域”来定义,比元胞更丰富、更灵活。

几个结构可以合成一个结构数组,但这些结构的域名必须一致。

>>As1.f1='first';As1.f2='second';As2.f1=1:

3;As2.f2=[12;34];

>>As=[As1;As2]

As=

2x1structarraywithfields:

f1

f2

>>size(As)%注意其size结果与元胞数组不同

ans=

21

>>As(2,1).f1

ans=

123

>>As.f1

ans=

first

ans=

123

元胞数组与结构数组可以用struct2cell和cell2struct函数进行适当的转换。

>>Bc=struct2cell(As)%注意结果与Ac的不同

Bc=

'first'[1x3double]

'second'[2x2double]

>>Bs=cell2struct(Ac,{'one','two'},1)%定义域名,并指定取域名的维

Bs=

2x1structarraywithfields:

one

two

看一看Workspace有哪些类型,并观察其字节数。

五、程序设计

1.控制流

前面我们用的命令都是顺序结构的,对于复杂的计算,需要循环和分支等复杂的程序结构。

MATLAB控制流语法都以end结尾。

常用控制流见表6.

 

表6MATLAB常用控制流

类型

语法

解释

循环语句

for循环变量=数组,

命令组

end

对于循环变量依次取数组中的值,循环执行命令组直到循环变量遍历数组。

数组最常用的形式是初值:

增量:

终值

循环语句

while条件式,

命令组

end

当条件式满足,循环执行命令组直到条件不满足。

使用While语句要注意避免出现死循环

分支语句

if条件1,

命令组1;

elesif条件2,

命令组2;

……;

else,

命令组k;

end

如果条件式1满足,则执行命令组1,且结束该语句;否则检查条件式2,若满足则执行命令组2,且结束该语句;……;若所有条件式都不满足,则执行命令组k,并结束该语句。

最常用的格式是

if条件式

命令组

end

分支语句

switch分支变量

case值1,

命令组1;

case值2,

命令组2;

……;

otherwise

命令组k;

end

若分支变量的取值1,则执行命令组1,且结束该语句;若分支变量的取值2,则执行命令组2,且结束该语句;……若分支变量不取所列出的值,则执行命令组k

中断语句

pause

暂停执行,直到击键盘,pause(n)为暂停n秒后再继续

中断语句

break

中断执行,用在循环语句内表示跳出循环

中断语句

return

中断执行该程序,回到主调函数或命令窗口

中断语句

error(字符串)

提示错误并显示字符说明

例1计算

>>clear;s=0;

>>forn=1:

100

s=s+1/n/n;

end

>>s

s=

1.6350

2.M脚本文件

复杂程序结构在命令窗口调试保存都不方便,所以进行复杂的运算大都使用程序文件。

从命令窗口用命令“edit”就进入MATLAB的程序编辑器窗口,用以编写用户的M文件。

M文件可分为两类:

M脚本文件和M函数文件。

将多条MATLAB语句写在编辑器中,并以.m文件保存在适当的目录中(这个目录须为MATLAB的搜索目录),就得到一个M脚本。

如我们将例1中的几条语句写在编辑器中,

保存为naega_1,然后在命令窗口执行:

>>naega_1

s=

1.6350

执行M脚本文件也可以在程序编辑器的Debug菜单选Run。

使用编辑器也可打开和修改M文件、观察变量值、调试程序等。

注意:

M文件名一律以字母开头,以字母、数字或下划线组成,不要含有空格、减号等,并要防止它与系统的变量名、系统内部的M函数名冲突。

例如1.m,ega-1.m,ega.1.m都是不合法的。

另外,别忘了每次修改程序后都要存盘。

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

当前位置:首页 > 表格模板 > 合同协议

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

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