数学建模社区-数学中国

标题: MATLAB入门 [打印本页]

作者: huashi3483    时间: 2004-10-2 10:01
标题: MATLAB入门

1.MATLAB简介

1 g; Z5 ]4 d, l: D- x5 F! k

MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。被誉为“巨人肩上的工具”。 由于使用Matlab编程运算

与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那

样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法

语言。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。

" B: N! p% l8 ]+ M# ?# E5 _! \( e

MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就以数值计算著称。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处

理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能

比拟的。美国许多大学的实验室都安装有MATLAB供学习和研究之用。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。

( b0 [' L. y4 ^6 s% L- _/ d; L3 J

MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制、系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。


作者: huashi3483    时间: 2004-10-2 10:01

2.MATLAB工作环境

运行MATLAB的可执行文件,自动创建MATLAB5.3指令窗(Command Window)。

如果你是个初学者,可以在指令窗键入demo,这可是学习的好帮手。

?demo

l 一旦发现指令不知如何使用时,help命令将告诉你使用。例:

?help sin

SIN Sine.

SIN(X) is the sine of the elements of X.

Overloaded methods

help sym/sin.m

在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:

(10*19+2/4-34)/2*3

ans

= 234.7500

MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算後的答案,并显示其数值屏幕上。

如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入

该变数值即可。

l MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的Options

下选 Numerical Format,或者直接在指令视窗键入以下的各个数字显示格式的指令。

» format short (这是默认的)

MATLAB利用了↑↓二个游标键可以将所下过的指令叫回来重覆使用。按下↑则前一次指令重新出现,之后再 按Enter键,即再执行前一次的指令。而↓键的功用则是往后执行指令。其它在键盘上的几个键如→←, Delete, Insert,其功能则显而易见,试用即知无须多加说明。

l Ctrl+C(即同时按CtrlC二个键)可以用来中止执行中的MATLAB的工作。

l 有三种方法可以结束MATLAB

1.exit / a* H: y6 ]( e6 p& x K& M2.quit 6 k! T- W" n* }# R- N3.直接关闭MATLAB的命令视窗(Command window)


作者: huashi3483    时间: 2004-10-2 10:01

3.变量及其命名规则

l 变量

1. MATLAB对变量名的大小写是敏感的。

2. 变量的第一个字符必须为英文字母,而且不能超过31个字符。

3. 变量名可以包含下划线、数字,但不能为空格符、标点。

预定义的变量

ans

预设的计算结果的变量名

eps

MATLAB定义的正的极小值=2.2204e-16

pi

内建的π值

inf

∞值,无限大 ( 1/0)

NaN

无法定义一个数目 ( 0/0 )

i 或 j

虚数单位i=j=(-1)^(1/2)

而键入clear则是清除所有定义过的变量名称。


作者: huashi3483    时间: 2004-10-2 10:02

4.MATLAB赋值语句

l 表达式

MATLAB书写表达式的规则与“手写算式”差不多相同。

如果一个指令过长可以在结尾加上...(代表此行指 令与下一行连续),例如

?3*...

6

ans =

18

比如将23赋值给变量a

a=23


作者: huashi3483    时间: 2004-10-2 10:02

5.MATLAB常用数学函数

l 三角函数和双曲函数

名称

含义

名称

含义

名称

含义

sin

正弦

csc

余割

atanh

反双曲正切

cos

余弦

asec

反正割

acoth

反双曲余切

tan

正切

acsc

反余割

sech

双曲正割

cot

余切

sinh

双曲正弦

csch

双曲余割

asin

反正弦

cosh

双曲余弦

asech

反双曲正割

acos

反余弦

tanh

双曲正切

acsch

反双曲余割

atan

反正切

coth

双曲余切

 

acot

反余切

asinh

反双曲正弦

sec

正割

acosh

反双曲余弦

l 指数函数

名称

含义

名称

含义

名称

含义

exp

E为底的指数

log10

10为底的对数

pow2

2的幂

log

自然对数

log2

2为底的对数

sqrt

平方根

l 复数函数

名称

含义

名称

含义

名称

含义

abs

绝对值

conj

复数共轭

real

复数实部

angle

相角

imag

复数虚部

l 取整函数和求余函数

名称

含义

名称

含义

ceil

向+∞取整

rem

求余数

fix

向0取整

round

向靠近整数取整

floor

向-∞取整

sign

符号函数

mod

模除求余

l 矩阵变换函数

名称

含义

名称

含义

fiplr

矩阵左右翻转

diag

产生或提取对角阵

fipud

矩阵上下翻转

tril

产生下三角

fipdim

矩阵特定维翻转

triu

产生上三角

Rot90

矩阵反时针90翻转

l 其他函数

名称

含义

名称

含义

min

最小值

max

最大值

mean

平均值

median

中位数

std

标准差

diff

相邻元素的差

sort

排序

length

个数

norm

欧氏(Euclidean)长度

sum

总和

prod

总乘积

dot

内积

cumsum

累计元素总和

cumprod

累计元素总乘积

cross

外积

可查阅在线帮助helpwinmatlab\elfunhelp elfun。


作者: huashi3483    时间: 2004-10-2 10:03

6.MATLAB系统命令

命 令

含 义

help

在线帮助

helpwin

在线帮助窗口

helpdesk

在线帮助工作台

demo

运行演示程序

ver

版本信息

readme

显示Readme文件

who

显示当前变量

whos

显示当前变量的详细信息

clear

清空工作间的变量和函数

pack

整理工作间的内存

load

把文件调入变量到工作间

save

把变量存入文件中

quit/exit

退出MATLAB

what

显示指定的matlab文件

lookfor

在HELP里搜索关键字

which

定位函数或文件

path

获取或设置搜索路径

echo

命令回显

cd

改变当前的工作目录

pwd

显示当前的工作目录

dir

显示目录内容

unix

执行unix命令

dos

执行dos命令

!

执行操作系统命令

computer

显示计算机类型

可查阅在线帮助helpwinmatlab\generalhelp general。


作者: huashi3483    时间: 2004-10-2 10:03

7.MATLAB语言中的关系与逻辑运算

在执行关系及逻辑运算时,MATLAB 将输入的不为零的数值都视为真 (True)而为零的数值则视为假 (False)。 运算的输出值将判断为真者以 1 表示而判断为假者以 0 表示。各个运算符须用在二个大小相同的阵列或是矩阵中的比较。

l 关系运算

指令

含义

<

小于

<=

小于等于

>

大于

>=

大于等于

==

等于

~=

不等于

?a=1:2:11;
?b=2:1:7;

?a>b

ans =

0 0 1 1 1 1

?a==b

ans =

0 1 0 0 0 0

?a>=b

ans =

0 1 1 1 1 1

?a-(b>4)

ans =

1 3 5 6 8 10

l 逻辑运算

指令

含义

&

逻辑 and

|

逻辑 or

~

逻辑 not

(a<2)|(b>6)

ans =

1 0 0 0 0 1

c=a+(a>3)|(b<6)

c =

1 1 1 1 1 1

l 逻辑关系函数

指令

含义

xor

不相同就取1,否则取0

any

只要有非0就取1,否则取0

all

全为1取1,否则为0

isnan

为数NaN取1,否则为0

isinf

为数inf取1,否则为0

isfinite

有限大小元素取1,否则为0

ischar

是字符串取1,否则为0

isequal

相等取1,否则取0

ismember

两个矩阵是属于关系取1,否则取0

isempty

矩阵为空取1,否则取0

isletter

是字母取1,否则取0(可以是字符串)

isstudent

学生版取1

isprime

质数取1,否则取0

isreal

实数取1,否则取0

isspace

空格位置取1,否则取0

isequal(a,b)

ans =

0

isreal(a)

ans =

1

isstudent

ans =

0


作者: huashi3483    时间: 2004-10-2 10:03

8.矩阵及运算

1. 数组

MATLAB的运算事实上是以数组 (array) 及矩阵 (matrix) 方式在做运算。

建立一个数组时,如果是要个别键入元素,须用中括号[ ] 将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如

» x=[1 2 3 4 5 6 7 8] ;% 一维 1x8 阵列

» x = [1 2 3 4 5 6 7 8; 4 5 6 7 8 9 10 11] ; % 二维 2x8 矩阵,以;区隔各列的元素

» x = [1 2 3 4 5 6 7 8 % 二维 2x8 矩阵,各列的元素分二行键入

4 5 6 7 8 9 10 11] ;

» x(3)% x的第三个元素

ans =

2

» x([1 2 5])% x的第一、二、五个元素

ans =

1 4 3

x(1:5)% x的第前五个元素

ans =

1 4 2 5 3

» x(10:end)% x的第十个元素后的元素

ans =

8 6 9 7 10 8 11

» x(10:-1:2)% x的第十个元素和第二个元素的倒排

ans =

8 5 7 4 6 3 5 2 4

» x(find(x>5))% x中大于5的元素

ans =

6

7

8

6

9

7

10

8

11

» x(4)=100%给x的第四个元素重新给值

x =

1 2 3 4 5 6 7 8

4 100 6 7 8 9 10 11

» x(3)=[]% 删除第三个元素

x =

Columns 1 through 12

1 4 100 3 6 4 7 5 8 6 9 7

Columns 13 through 15

10 8 11

» x(16)=1% 加入第十六个元素

x =

Columns 1 through 12

1 4 100 3 6 4 7 5 8 6 9 7

Columns 13 through 16

10 8 11 1

2 建立数组

上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:

» x=(0:0.02:1); % 以:起始值=0、增量值=0.0.2、终止值=1的矩阵

» x=linspace(0,1,100); % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100

»a=[]%空矩阵

a =

[]

» zeros(2,2)%全为0的矩阵

ans =

0 0

0 0

» ones(3,3) %全为1的矩阵

ans =

1 1 1

1 1 1

1 1 1

» rand(2,4);随机矩阵

»a=1:7, b=1:0.2:5;%更直接的方式

»c=[b a]; %可利用先前建立的阵列 a 及阵列 b ,组成新阵列

» a=1:1:10;

» b=0.1:0.1:1;

» a+b*I%复数阵列

ans =

Columns 1 through 4

1.0000 + 0.1000i 2.0000 + 0.2000i 3.0000 + 0.3000i 4.0000 + 0.4000i

Columns 5 through 8

5.0000 + 0.5000i 6.0000 + 0.6000i 7.0000 + 0.7000i 8.0000 + 0.8000i

Columns 9 through 10

9.0000 + 0.9000i 10.0000 + 1.0000i

在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented)的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址

l 子矩阵

通过一个矩阵产生另一个矩阵的方法(上面已经有例子)

假如一个矩阵A

则 A(m1:m2 ,n1:n2)


作者: huashi3483    时间: 2004-10-2 10:04

9.矩阵的运算

l 经典的算术运算符。

经 典 的 算 术 运 算 符

运 算 符

MATLAB表达式

+

a+b

-

a-b

*

a*b

/ 或 \

a/b或a\b

^

a^b

l 前面我们已经把经典的算术运算符告诉大家了,在这里同样也可以使用。

» a=1:1:10;

» b=0:10:90;

» a+b

ans =

1 12 23 34 45 56 67 78 89 100

» a-b

ans =

1 -8 -17 -26 -35 -44 -53 -62 -71 -80

» a.*b%注意这里a后加了个“.”

ans =

0 20 60 120 200 300 420 560 720 900

» a/b

ans =

0. 1158

» a\b

ans =

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 1 2 3 4 5 6 7 8 9

» b./a

ans =

Columns 1 through 7

0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714

Columns 8 through 10

8.7500 8.8889 9.0000

» a.\b

ans =

Columns 1 through 7

0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714

Columns 8 through 10

8.7500 8.8889 9.0000

» a.^2

ans =

1 4 9 16 25 36 49 64 81 100

说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。

l 矩阵转置运算

通过在矩阵变量后加’的方法来表示转置运算

?a=1:1:10;
?b=0:10:90;

?a'

ans =

1

2

3

4

5

6

7

8

9

10

?c=a+b*i;

?c'

ans =

1.0000

2.0000 -10.0000i

3.0000 -20.0000i

4.0000 -30.0000i

5.0000 -40.0000i

6.0000 -50.0000i

7.0000 -60.0000i

8.0000 -70.0000i

9.0000 -80.0000i

10.0000 -90.0000i


作者: zbh228    时间: 2004-11-27 23:18
hao
作者: chinamlh1    时间: 2004-12-10 23:09

谢谢楼主


作者: zhanfeng    时间: 2004-12-15 22:25
很有用
作者: shuai_qi    时间: 2004-12-17 09:24
看起来不是入门,到更像是简介。
作者: liary    时间: 2004-12-18 10:58
这些都是入门知识呀
作者: cooooldog    时间: 2005-2-12 12:59

不错。

我来晚了


作者: luzhuo    时间: 2005-2-18 01:14

能不能做成一个word文件供下载?


作者: kaokao    时间: 2005-3-3 20:18
优化工具箱?
作者: shewei1977    时间: 2005-3-7 11:50
写的真好,有对于数学建模的简明教程吗?
作者: aleikiss    时间: 2005-3-7 22:53
写的真好
作者: larry98    时间: 2005-3-8 03:01
why not google it? there're tons of tutorial available
作者: qimeng2    时间: 2005-3-16 19:16
怎么都是些乱码啊?!
作者: liuhy1984    时间: 2005-3-19 15:09

哎,真是没法看啊,惨目人睹!!哎!!


作者: xyjuzhen    时间: 2005-3-20 15:57

呵呵,是有不少乱码,不过要想学MATLAB,买本书,照着书本多上机练习就好了。


作者: hsdgsxywt    时间: 2005-3-20 20:08
有中文版的同类软件吗?
作者: zzc    时间: 2005-3-23 20:33
正在寻找,谢谢!
作者: vens2008    时间: 2005-5-21 13:13
3Q!
作者: greatlisen    时间: 2005-5-22 09:29

好!


作者: fibreoptic    时间: 2005-9-25 00:22
推上天
作者: yqfrp    时间: 2005-10-11 15:39
太难啦
作者: comhost    时间: 2005-10-11 20:33

niu


作者: kurt    时间: 2006-6-30 15:30
这也是MATLAB入门![em03]
作者: scutgyl    时间: 2007-11-7 01:03
thanks
作者: liwenhui    时间: 2007-11-7 18:10

经典

我也在做一本教材,希望用简介的话把不会matlab的人教会,估计本月底可以出炉。

再次说一句,经典~~


作者: 梁礼铭    时间: 2010-1-28 13:34
很好,正是我要找的………………………………………
作者: xiana    时间: 2010-4-29 18:36
真好,很详细,谢谢啦! x6 _1 p3 T- _. ^* U, d- b
更加努力吧,为我们创造好的学习环境
作者: freedom_tl    时间: 2010-5-5 10:12
haodongxiya 大家快来学  haodongxiya 大家快来学 haodongxiya 大家快来学
作者: aiguozhedaodan1    时间: 2011-2-2 13:11
好东西,谢谢楼主!!!!!!!!
作者: 不要盗我号    时间: 2011-5-2 19:55
其实我一直觉得楼主的品味不错!呵呵!( o/ C; e, w. E. k
数学中国社区太棒了!
/ h" T8 z  k9 x
作者: 胖儿7895123    时间: 2011-12-19 10:06
不错啊,可是感觉还有一点点少啊




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5