文档库 最新最全的文档下载
当前位置:文档库 › MATLAB讲义

MATLAB讲义

MATLAB讲义
MATLAB讲义

第一章MATLAB简介

MA TLAB的原意为MA Trix LABoratory,即矩阵实验室,是由在数值线性代数领域颇有影响的Cleve Moler博士首创的。后来由Moler博士等一批数学家和软件专家组建了MathWorks软件公司,专门从事MA TLAB的扩展与改进。

MA TLAB不仅具有强大的数值计算能力,而且具有数据图示功能和符号运算功能。特别是大量的工具箱,扩展了应用领域,是高校学生、教师、科研人员和工程计算人员的最好选择,是数学建模必不可少的工具。

1.1MA TLAB的主要特点

1.功能强大

MA TLAB以复数矩阵作为基本编程单元,可以方便地处理诸如矩阵

变换及运算、多项式运算、微积分运算、线性与非线性方程求解、

常微分方程求解、偏微分方程求解、插值与拟合、特征值问题、统

计及优化问题。

2.语言简单

MA TLAB语句书写简单,表达式的书写如同在稿纸中演算一样,允

许用户以数学形式的语言编写程序,控制语句同C语言相近,并提

供了强大的帮助功能。

3.扩充能力强

MA TLAB本身就像一个解释系统,用户可以方便地看到函数的源程

序,也可以方便地开发自己的程序。另外,MA TLAB可以方便地和

FORTRAN、C等语言进行接口,还和Maple有很好的接口。

4.编程易

从形式上看,MA TLAB程序文件是一个纯文本文件,扩展名为M,调试方便。

1.2MA TLAB的窗口

1.启动MA TLAB

2.工具栏

3.命令窗口

MA TLAB的输入命令和输出结果的窗口,在这里输入的命令会立即

执行并输出结果。可用UP键盘将以前执行的命令调出。

1.3MA TLAB的通用命令

1.管理命令和函数:

2.管理变量和工作空间

3.控制命令窗口

4.使用文件和工作环境

5.启动和退出MA TLAB

第二章数值计算

2.1数字及运算

1.数值

MA TLAB中采用十进制数,并可用科学表示法,虚数用i或j 表示。

5 -39 0.0025 1.52e-20 6.9e13 3.0i -3+4i

浮点数的范围大致为10-308~10308。

2.变量的定义及代换

MA TLAB中的变量不需要事先定义,在遇到新的变量名时,MA TLAB会自动建立该变量并分配存储空间。对变量赋值可采用赋值语句。

变量名=表达式[;]

3.固定变量

MA TLAB中提供了一些用户不能清除的固定变量。

(1)ans:在没有定义变量时系统默认变量名

(2)eps:在决定诸如奇异性和秩时,可作为一个容许误差,eps=2.22*10-16,用户也可将此变量置为其它任何值。

(3)pi:即л

(4)Inf:表示正无穷大,当输入1/0时会产生Inf

(5)NaN:表示不定值,它由Inf/Inf或0/0运算产生。

4.算术运算:+ 加- 减* 乘/ 除\ 左除^ 乘方

5.数字的输出格式

MA TLAB的输出格式可由format命令控制,但要注意的是format

命令只是影响在屏幕上的显示,而MA TLAB的数据存储和运算

总是以双精度进行的。

Format short :5位定点格式,如 1.4142

Format long :15位定点格式,如 1.41421356237310

Format short e :5位浮点,如1.4142e+000

Format long e :15位浮点,如1.414213562373095e+000

Format short g :5位定点或浮点取优,如1.4142

Format long g:15位定点或浮点取优,如1.4142135623731

Format hex :十六进制数,如3ff6a09e667f3bcd

Format bank :货币格式,如1.41

Format rat :分数之比,如1393/985

Format +:若为正数则显示+,若为负数则显示-,若为0则显示空2.2向量及运算

1.向量的生成

(1)直接输入

在命令窗口中直接输入,向量元素用“[]”括起来,元素之间

用空格、逗号或分号分隔。用空格和逗号分隔生成行向量,用

分号分隔生成列向量。

(2)利用冒号表达式生成

冒号表达式的基本形式为:x=x0:step:x n

如:a=1:2:12

a =

1 3 5 7 9 11

(3)线性等分向量的生成

linspace(x1,x2) 生成(1*100)维的行向量。

linspace(x1,x2,n) 生成(1*n)维的行向量。

(4)对数等分向量的生成

logspace(x1,x2) 生成(1*50)维对数等分向量。

Logspace(x1,x2,n) 生成(1*n)维对数等分向量。

2.向量的基本运算

(1)加减与数加减

向量的加减法要求运算的向量有相同的维数,而向量的数加减法运算则是先数字扩展成与向量同维的且每个元素都等于该数字的向量,再进行加减运算。

如:x1=linspace(1,100,6)

x1 =

1.0000 20.8000 40.6000 60.4000 80.2000 100.0000

x1-1

ans =

0 19.8000 39.6000 59.4000 79.2000 99.0000

(2)数乘

向量的数乘运算是将每个元素都乘以该数字。

如:x1*2

ans =

2.0000 41.6000 81.2000 120.8000 160.4000 200.0000 (3)点积、叉积及混合积

向量的点积:由函数dot来实现。

dot(A,B) 返回向量A和B的数量点积。A和B必须同维。当A

和B都为列向量时,它等同于A’*B

dot(A,B,DIM) 返回A和B在维数为DIM的点积。

还可以用sum(a .*b)求向量的点积。

向量和叉积:由函数cross实现。

Cross(A,B) 返回向量A和B的叉积向量。A和B必须为3 个元

素的向量。

Corss(A,B,DIM) 当A和B为N-维数组时,则返回A和B在DIM

维的向量的叉积。A和B必须有相同的大小,且size(A,DIM)和

size(B,DIM)必须为3

向量混合积:由以上2 个函数实现。

Dot(a,cross(b,c))

2.3矩阵及运算

1.矩阵的生成

(1)直接输入小矩阵

输入矩阵时要用“[]”括起来,同行元素之间由空格或“,”分隔,

行与行之间用“;”或回车符分隔,矩阵元素可以是表达式。

如:a=[1 2 3;4,5,6;7,8 9]

a =

1 2 3

4 5 6

7 8 9

b=[sin(pi/3),cos(pi/4);log(9),tanh(6)];

(2)创建M文件输入大矩阵

M文件是一种可以在MA TLAB环境下运行的文本文件。它可分

为命令式文件和函数式文件2种。

当矩阵的规模比较大时,可以利用M文件的特点将所要输入的矩阵按格式写入一文本文件中,并将此文件以.m 为其扩展名,即为M文件。

如:建立名为example.m的M文件如下:

exm=[456 356 43 44 534 454

44454 454 454 33 455

4567 67 55 67 4]

在MA TLAB命令窗口中输入:example即可。

(3)特殊矩阵的生成

空阵:在MA TLAB中定义“[]”为空阵。

全零阵:由函数zeros生成,

zeros(N) 生成N*N的全零阵

zeros(M,N) 或zeros([M,N]) 生成M*N的全零阵。

单位阵:由函数eye生成,

eye(N) 生成N*N的单位阵

eye(M,N) 生成M*N的单位阵。

全一阵:由函数ones生成,

ones(N) 生成N*N的全一阵

ones(M,N) 生成M*N的全一阵。

随机阵:由函数rand生成

rand(N) 产生一N*N均匀分布的随机矩阵,元素的值在(0.0,1.0)区间内。

Rand 产生一随机数量。

Randn(N) 生成一N*N的正态分布N(0,1)的随机阵

其他特殊矩阵:

compan magic gallery pascal hadamard rosser hankel toeplitz hilb vander invhilb wilkinson

2.矩阵的基本数学运算

(1)矩阵的加减乘除: + - *

矩阵的除法有2种形式:左除“\”和右除”/”

右除:A/B基本上相当于A*INV(B),精确地说,A/B = (B'\A')'。左除:A\B基本上相当于INV(A)*B ,若A为N*N矩阵,B为N 个元素的列向量,则X = A\B是线性方程A*X = B的解(利用高斯消元法),若A为M*N矩阵,B为M个元素的列向量,则X=A\B 是在最小二乘意义下方程A*X=B的解,A\EYE(SIZE(A))是A 的逆矩阵。

(2)矩阵与常数的运算

常数与矩阵运算即是同此矩阵各元素之间进行运算,数加是指矩阵每个元素都加上此常数,数乘是指矩阵每个元素都与此常数相乘。当进行数除时,常数只能作除数。

(3)矩阵的转置A’ 求矩阵A的转置。

(4)矩阵的逆运算

inv(A) 求方阵A的逆矩阵。

pinv(A) 求矩阵A的伪逆,对求解系数矩阵严重“病态”的问题时,可避免“伪解”的产生。

(5)矩阵的行列式运算

det(A) 求方阵A的行列式的值。

(6)矩阵的幂运算

运算符为“^”,A为方阵,x为数字,则A^x,当x为大于1的

整数表示x个方阵相乘,当x为其它值时,幂函数的计算要涉及到特征值和特征向量。x^A的计算也要用特征值和特征向量。

当指数和底数均为矩阵时,无法求解。

(7)矩阵的指数运算,即e A

矩阵的指数运算的最常用的命令为expm,同类的命令还有expm1,expm2,expm3。其中expm1是由Pade 近似来计算矩阵指数的,expm2是由Taylor级数来计算矩阵指数,expm3是由特征值法来计算指数。

如:计算3阶魔方矩阵的指数,并比较不同函数的结果。

b=magic(3);

expm(b);expm1(b);expm2(b);expm3(b);

这几个函数的结果是有差别的。

(8)矩阵的对数运算

logm(A) 求方阵A的对数。

(9)矩阵的开方运算,即A

sqrtm(A) 求矩阵A的算术平方根。

3.矩阵的基本函数运算

(1)特征值函数

矩阵的特征值可由函数eig和eigs计算得出,其中函数eig可以给出矩阵的特征值和特征向量,而函数eigs则是使用迭代法求解特征值和特征向量的。

E=eig(A) 返回矩阵A的特征值。

[V,D]=eig(A) V为特征向量,使得A*V=V*D,D为特征值矩阵。

如:求???

?

?

???

??----=31

2

143

237A 的特征值和特征向量。 (2)奇异值函数

矩阵的奇异值函数也有2种形式svd 和svds ,它们所使用的方法相同,只是计算精度略有差别。

[U,S,V] = SVD(X) 产生了一个对角矩阵S ,U 和V 使得X = U*S*V'.

(3)条件数函数

条件数的值是矩阵“病态”程度的度量。 cond(A) 计算矩阵A 条件数的值。

condest(A) 计算矩阵A 范数条件数的估计值。 rcond(A) 计算矩阵A 条件数的倒数值。 例如:计算9阶Hilbert 矩阵和条件数的值。 h=hilb(9); cond(h); rcond(h); condest(h);

虽然各条件数的计算数值并不相同,但结论是一致的,即此矩阵是严重病态的。

(4)特征值的条件数

在求解矩阵的特征值时也会遇到“病态”问题,此时就需要引入特征值的条件数。

condeig(A) 返回对于A 的特征值的条件数的向量。 [V ,D,S]=condeig(A) 相当于[V ,D]=eig(A)和s=condeig(A) (5)范数函数

矩阵的范数是矩阵的一种量度,它可分为1范数、2范数、无穷范数和F 范数。其中最常用的是2范数,范数的计算由函数norm

和normest实现。

norm(A,p) 其中p可以为1、2、inf或’fro’。而normest只能计算矩阵2范数的估计值。

(6)秩函数

矩阵的秩的求解可由函数rank实现。

(7)迹函数

矩阵所有对角线上元素的和称为矩阵的迹,在MA TLAB中可由trace函数计算得出。

(8)零空间函数

求零空间矩阵的函数为null

(9)正交空间函数

函数orth用来求矩阵的一组正交基。

(10)LU分解

[L,U]=lu(A)

(11)通用函数形式

以上所介绍的针对矩阵的函数形式在实际运算中是远远不够的,对常用的其他运算,如三角函数运算、双曲函数等的运算,需要一种能够使用这些通用函数的形式。在MA TLAB中使用通用函数的格式为funm(A,’funname’),其中A为输入矩阵变量,funname为调用的函数名。如funm(b,’log’)其作用同于logm(b)而funm(b,’sqrt’)同于sqrtm(b)。

表2-1基本函数表

表2-2 特殊函数表

4.矩阵的一些特殊操作

(1)变维

实现矩阵的变维有二种方法:即用“:”和函数reshape。前者主要是针对2个矩阵之间的运算以实现变维;而后者则是对于于个矩阵的操作。

reshape(X,M,N) 将矩阵X变成M*N维矩阵。

使用“:”符号表达式进行变维操作,则2个矩阵必须预先定义维数。

如:a=[1:12]

b=reshape(a,2,6);

c=zeros(3,4);

c(:)=a(:)

(2)矩阵的变向

rot90(A) 将A逆时针方向旋转900

rot90(A,K) 将A逆时针方向旋转(90*K)0,K值可为正值或负值。

fliplr(A) 将A左右翻转。

flipud(A) 将A上下翻转。

flipdim(A) 将A按第DIM维翻转。

(3)矩阵的抽取

diag(X,k) 抽取矩阵X的第k条对角线的元素向量,k为0时即为抽取主对角线,k为正值时为上方第k条对角线,k为负值时为下方第k条对角线。

diag(v,k) 使得向量v为所得矩阵的第k条对角线。

tril(A) 提取矩阵A的主下三角部分。

triu(A) 提取矩阵A的主上三角部分。

(4)矩阵的扩展

对矩阵的扩展有2种方法:

●利用对矩阵标识块的赋值命令。

A(m1:m2,n1:n2)=a,生成大矩阵。其中(m2-m1+1)必须等于a的行维数,(n2-n1+1)必须等于a的列维数。生成的(m2*n2)维的矩阵A,除赋值子阵和已存在的元素外,其余元素都默认为0。

如:a=[1 2 3;4 5 6;7 8 9]

a(3:5,4:6)=eye(3)

●利用小矩阵的组合来生成大矩阵

如:v=[1 2 6 20]

a2=[-v(2:4);eye(2),zeros(2,1)]

注意矩阵大小的匹配。

2.4数组及运算

同维矩阵对应元素之间的运算称为数组运算。在MA TLAB中,数组作为独立的计算单元实体是不存在的,它的建立、存储方法完全同于矩阵,只是在计算时在符号上作了不同的约定,才使计算大相径庭。因此MABLAB中的数组更倾向一种运算形式,而且是针对矩阵的运算形式。1.基本数组运算

●四则运算:数组的四则运算是指两数组间对应元素之间的四则运算。

因此,数组的加减和矩阵的加减是相同的,运算符为+,-。乘除的

运算符为.*,./或.\。

●数组与常数的运算:数组与常数之间的“数加”和“数减”运算,

在算符上可以加“.”也可以不用“.”,但若加“.”时一定要把常数

写在前面。“数乘”运算即为数组元素都与常数进行相乘,在算符上

可以加点也可以不加点。“数除”运算,常数可以做被除数也可做除

数,但若算符省略“.”时,常数只能做除数。

●数组的幂运算:数组的幂运算符为“.^”,它表示每个数组元素的幂

运算。

如:a=[1 2 3 ;4 5 6;7 8 9]

a.^3

ans =

1 8 27

64 125 216

343 512 729

3.^a

ans =

3 9 27

81 243 729

2187 6561 19683

数组的指数运算、对数运算和开方运算:

exp(A) 指数运算log(A) 对数运算sqrt(A) 开方运算

2.数组函数运算:见表2-1和表2-2

3.数组逻辑运算

逻辑运算是数组运算所特有的一种运算形式,包括逻辑关系运算和逻辑函数运算。结果为真用1表示,结果为假用0表示。

(1)逻辑关系运算:见下表

表2-3基本逻辑运算表

(2)逻辑函数运算

表面2-4 逻辑关系函数表(部分)

2.5

多项式及运算

1.多项式的表示方法

表达约定:对于多项式

n n n n

a x a x a x a x P ++++=--11

10)( ,用以下的行向量表示:

P=[a 0,a 1,...,a n-1,a n ],这样就把多项式问题转化为向量问题。 (1)系数向量的直接输入法

将多项式的系数作为向量输入,MA TLAB 将自动将向量按降幂顺序分配给各系数值,向量可以 为行向量,也可为列向量。 如:输入多项式5272

3

+--x x x p=[1 -7 -2 5] poly2sym(p) ans =

x^3-7*x^2-2*x+5 (2)特征多项式

ploy(A) 从方阵A 求其特征多项式 如:a=[1 2 3 ;4 5 6;7 8 9] ploy(a)

(3)由根创建多项式

由给定的根也可产生其对应的多项式,此功能也由函数ploy 实现。 2.多项式的运算

(1) 求多项式的值:有两种算法,一是将输入变量值代入多项式,计

算时以数组为单元,实现的函数为polyval 。二是以矩阵为计算单元进行矩阵式运算,以求得多项式的值,实现的函数为polyvalm 。这两种算法在结果数值是有很大的差别。 如:p=[1 3 5] polyval(p,2) ans =

15

polyvalm(p,2) (2) 求多项式的根

求多项式的根有2种办法,一是直接调用MA TLAB 的函数roots ,求解多项式的所有根。二是通过建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根。

如:求下面方程086532

3

5

=+-+-x x x x 的所有根 p=[3 0 -5 1 -6 8]; 第一种方法:

roots(p)

ans =

-1.7395

-0.2498 + 1.0636i

-0.2498 - 1.0636i

1.1196 + 0.1757i

1.1196 - 0.1757i

第二种方法:

compan(p)

ans =

0 1.6667 -0.3333 2.0000 -2.6667

1.0000 0 0 0 0

0 1.0000 0 0 0

0 0 1.0000 0 0

0 0 0 1.0000 0

eig(ans)

ans =

-1.7395

-0.2498 + 1.0636i

-0.2498 - 1.0636i

1.1196 + 0.1757i

1.1196 - 0.1757i

(3)多项式的乘除法运算:多项式的乘法由函数conv实现,多项式的除法用deconv实现。

(4)多项式微分:polyder

matlab的RBF-BP神经网络讲义

matlab的RBF BP神经网络讲义 一、RBF神经网络 1985年,Powell提出了多变量插值的径向基函数(Radical Basis Function,RBF)方法, 1988年,Moody和Darken提出了一种神经网络结构,即RBF神经网络。 RBF网络是一种三层前向网络,其基本思想是:(1)用RBF作为隐单元的“基”构成隐含层空间,将输入矢量直接(即不需要通过权连接)映射到隐空间(2)当RBF的中心点确定后,映射关系也就确定(3)隐含层空间到输出空间的映射是线性的。 newrb()函数 功能 建立一个径向基神经网络 格式 net = newrb(P,T,GOAL,SPREAD,MN,DF) 说明 P为输入向量,T为目标向量,GOAL为圴方误差,默认为0,SPREAD为径向基函数的分布密度,默认为1,MN为神经元的最大数目,DF为两次显示之间所添加的神经元神经元数目。 例子: 设[P,T]是训练样本,[X,Y]是测试样本; net=newrb(P,T,err_goal,spread); %建立网络 q=sim(net,p); e=q-T; plot(p,q); %画训练误差曲线 q=sim(net,X); e=q-Y; plot(X,q); %画测试误差曲线 二、BP神经网络 训练前馈网络的第一步是建立网络对象。函数newff()建立一个可训练的前馈网络。这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数是包含每层用到的传递函数名称的细胞数组。 最后一个参数是用到的训练函数的名称。 举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。 第一层的传递函数是tan-sigmoid,输出层的传递函数是linear。 输入向量的第一个元素的范围是-1到2[-1 2],输入向量的第二个元素的范围是0到5[0 5],训练函数是traingd。 net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd'); 这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。 我们可能要多次重新初始化权重或者进行自定义的初始化。 下面就是初始化的详细步骤。 在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实

MatLab讲义

2011年数学中国国赛培训讲座 Matlab的基础及数学建模中的应用 周吕文:zhou.lv.wen@https://www.wendangku.net/doc/df7573844.html, 大连大学数学建模工作室&中国科学院力学研究所 2011年7月

第一部分 MatLab基础 1 简单介绍 MATLAB是Matrix Laboratory“矩阵实验室”的缩写。MatLab语言是由美国的Clever Moler博士于1980年开发的,初衷是为解决“线性代数”课程的矩阵运算问题。1984年由美国 MathWorks公司推向市场,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。 在数学建模竞赛中,由于只有短短的三到四天,而论文的评判不仅注重计算的结果更注重模型的创造性等很多方面,因此比赛中把大量的时间花费在编写和调试程序上只会喧宾夺主,是很不值得的。使用MATLAB 可以很大程度上的方便计算、节省时间,使我们将精力更多的放在模型的完善上,所以是较为理想的。 这里快速的介绍一下MATLAB与数学建模相关的基础知识,并列举一些简单的例子,很多例子都是源于国内外的数学建模赛题。希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题。当然要想学好MatLab更多的依赖自主学习,一个很好的学习MatLab的方法是查看MatLab的帮助文档: z如果你知道一个函数名,想了解它的用法,你可以用'help'命令得到它的帮助文档:>>help functionname z如果你了解含某个关键词的函数,你可以用'lookfor'命令得到相关的函数: 2 基本命令与函数 基本运算 z变量的赋值 实数赋值>> x=5; 复数赋值>> x=5+10j; (或>>x=5+10i) z向量的一般值方法 行向量赋值:>>x=[1 2 3]; (或x=[1, 2 ,3]) 列向量赋值:>>y=[1;2;3]; 矩阵的赋值:>>x=[1 2 3; 4 5 6; 7 8 9]; z常用矩阵(zeros ones eye) n行m列0矩阵:>>x=zeros(n,m); n行m列1矩阵:>>x=ones(n,m); n 阶的单位阵:>>y=eye(n); z矩阵行列操作 >> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >>x=A(1,3) %取第一行的第三列元素 x= 3

天津大学matlab讲义-应用基础第一章

MATLAB应用基础 赵国瑞 天津大学电子信息工程学院 计算机基础教学部 2000.3 制作

概述 MATLAB是世界流行的优秀科技应用软件之一。具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。 自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1996年发布5.0版,1999年发布5.3版。目前发布的为6.5版。 MATLAB有专业和学生版之分。二者功能相同,但计算规模和计算难度有差别。 在国内外,已有许多高等院校把MATLAB列为本科生、研究生必须掌握的基本技能。我校自1999年列为研究生选修课程。而且有很多教师、研究生把它作为进行科研的重要工具。 国内关于MATLAB的书籍很多,如: 《精通MATLAB 5.3》张志涌等编著北京航空航天大学出版社,2000.8 《科学计算语言MATLAB简明教程》杜藏等编著南开大学出版社,1999.6 《精通MATLAB 5》张宜华编写清华大学出版社,1999.6 《精通MATLAB--综合辅导与指南》 Duane Hanselman、Bruce Littlefield编著李人厚等译较西安交通大学出版社,1998.1 等等 本课程主要介绍MATLAB 5.3的基本功能和基础知识。至于其包含的多种工具箱,如仿真工具箱、解非线性方程(组)工具箱、优化工具箱等,应通过本学习后,结合各专业自己进一步学习和使用。 第1章MATLAB基础 1.1 源文件(M-文件) 分为两类:函数文件和非函数文件。 都用扩展名.M 1.1.1函数文件 格式1(无返回值函数) function函数名(输入表) %称为函数头 函数体 例如: function box(opt_box); %BOX Axis box. % BOX ON adds a box to the current axes. % BOX OFF takes if off. % BOX, by itself, toggles the box state. % % BOX sets the Box property of the current axes. % % See also GRID, AXES. % Copyright (c) 1984-98 by The MathWorks, Inc. % $Revision: 1.5 $ $Date: 1997/11/21 23:32:59 $

MATLAB讲义

第一章基础准备及入门 什么是MATLAB? MATLAB是MathWorks公司于1984年推出的数学软件,是一种用于科学工程计算的高效率的高级语言。MATLAB最初作为矩阵实验室(Matrix Laboratory),主要向用户提供一套非常完善的矩阵运算命令。随着数值运算的演变,它逐渐发展成为各种系统仿真、数字信号处理、科学可是化的通用标准语言。 在科学研究和工程应用的过程中,往往需要大量的数学计算,传统的纸笔和计算机已经不能从根本上满足海量计算的要求,一些技术人员尝试使用Basic,Fortran,C\C++等语言编写程序来减轻工作量。但编程不仅需要掌握所用语言的语法,还需要对相关算法进行深入分析,这对大多数科学工作者而言有一定的难度。与这些语言相比, MATLAB的语法更简单,更贴近人的思维方式。用MATLAB编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言。 MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵。正如其名“矩阵实验室”,MATLAB起初主要是用来进行矩阵运算。经过MathWorks 公司的不断完善,时至今日,MATLAB已经发展成为适合多学科、多工作平台的功能强大的大型软件。 本章有两个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明系统地介绍高度集成的Desktop操作桌面的功能和使用方法。 本章的前两节分别讲述:MATLAB的正确安装方法和MATLAB 环境的启动。因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对MATLAB各种版本都适用。 MATLAB6.x 不同于其前版本的最突出之处是:向用户提供前所未有的、成系列的交互式工作界面。了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。为此,本章特设几节用于专门介绍最常用的交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。 本章是根据MATLAB6.5版编写的,但大部分内容也适用于其他6.x版。 1.1M ATLAB的安装和内容选择

MATLAB软件基础知识讲义(doc 74页)

MATLAB软件基础 §1MATLAB 概述 MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。 20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MA TLAB 语言推向市场,并开始了对MATLAB工具箱等的开发设计。1993年,Mathworks公司推出了基于个人计算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)。 现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。特别是最近几年,MATLAB在我国大学生数学

建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。 概括地讲,整个MATLAB系统由两部分组成,即MATLAB 内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点: 1)运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB 除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能。 2)既具有结构化的控制语句(如for循环、while循环、break 语句、if语句和switch语句),又有面向对象的编程特性。 3)图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。 4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图

Matlab基础知识点汇总

MATLAB讲义 第一章 MATLAB系统概述 1.1 MATLAB系统概述 MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用C语言编写。 特点: (1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。 (2)语句书写简单。 (3)语句功能强大。 (4)有丰富的图形功能。如plot,plot3语句等。 (5)提供了许多面向应用问题求解的工具箱函数。目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。 (6)易扩充。 1.2 MATLAB系统组成 (1)MATLAB语言 MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时MATLAB又具有面向对象编程特色。MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。 (2)开发环境 MATLAB开发环境有一系列的工具和功能体,其部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。 (3)图形处理 图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。 (4)数学函数库 有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。 MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。 (5)MATLAB应用程序接口(API) MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。 1.3 MATLAB的应用围包括: MATLAB的典型应用包括: ●数学计算 ●算法开发 ●建模、仿真和演算 ●数据分析和可视化 ●科学与工程绘图 ●应用开发(包括建立图形用户界面) 以矩阵为基本对象 第二章 Matlab基础

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

matlab讲义要点

前期知识:高等数学,机械原理,液压传动,控制原理 学习目标:了解基本原理、掌握基本应用、熟练使用matlab 、精通机械工程的建模和仿真 本课计划:课堂学习、课后练习、 任务:要看课堂笔记 引例:斐波纳西数列的递推公式为)2()1()(--+=n n n F F F ,通项表达式是什么? 高等数学上册第48页。斐波纳西数列在优化设计和股票分析中有用处。 第1章 了解Matlab 本章要求:了解Matlab 的功能、组成 第1节 Matlab 的界面 1.命令窗口:输入命令和显示运行结果和寻求帮助的窗口。 第1个例子求不定积分 问题:在编写代码时不能输入或者不能显示汉字 解决办法:将use custom font 换成use desktop font

先定义一个符号变量x syms x 设2 11 )(x x f += 求不定积分 ?dx x f )( matlab 求解:int(1/(1+x .^2)) 详见l1_bdjf.m 最重要的问题一:工作路径 查看当前工作路径的命令是 pwd matlab 默认的路径为安装好的目录下work ,为了需要我们需要改换路径。 改换路径的方法有:(1)采用DOS 命令 mkdir('根目录名称','新目录名称') 例:mkdir('d:\','mywork') 如果d 盘下没有mywork 即创建,如有就会给出警告。 进入新建文件夹 cd d:\mywork (2)采用matlab 命令 editpath ,pathtool (3)通过matlab 界面 [file]菜单->set path 难点:我想将打开MATLAB 时的默认工作路径改为F:\Program\MATLAB\WorkSpace\ ,只需要在原来的默认路径(bin)下创建一个名为startup.m 的文件,内容为相对路径 cd ..\..\WorkSpace\ 或绝对路径 cd F:\Program\MATLAB\WorkSpace\ 即可。再次打开MA TLAB 时便会自动执行startup.m 文件,将工作路径转至WorkSpace 下。 最重要的问题二:工作路径设置不能设置在有汉字的目录下或汉字文件夹,不支持汉字运算。 汉字用的是Unicode 编码一个字符占两个字节,字母用的是ASC Ⅱ编码,一个字母占一个字节。到2008版才能处理汉字。 初学者容易出现的错误就是把别人的程序拷在带汉字的文件夹下,运行出现错误。 如果我们已知某个文件名,但忘了在哪个文件夹下,可以用which 命令如which FUN what 命令:M-files in the current directory 思考题:what 和dir 的区别? 2.工作空间:显示数据的变量信息,包括变量名、字节大小、变量类型等。 输入 load wind 和load cities 加载了后缀为mat 的wind 和cities 数据文件 在命令窗口输入who 就可以列出空间的变量 在命令窗口输入whos 可以列出名称、大小和类型 whos -file 文件名.mat 可以查看加载前的数据信息。 3.历史记录: 显示所有在命令窗口输入的执行过的命令,清除历史的方法有两种

matlab讲义

2.3终值及其应用 2.3.1终值的概念 终值是与现值相对的概念,是指当前的一项现金流在未来某个时刻的价值。在求终值问题时应该考虑单利和复利的问题,一般如果没有特别的说明则都是按照复利(离散复利)进行计算。 在复利计息的情况下,当前的现金流PV在利率为r时到第t期期末的终值为: t FV) = 1(+ r PV 2.3.2终值的计算 在Matlab中,用来计算现金流的终值的函数有fvfix和fvvar两个。同样,-fix函数用来计算规则现金流的终值;而-var函数则用来计算不规则现金流的终值。 【例2.9】一投资者的储蓄账户初始余额为$1500,在随后的10年中,每月末都会收到$200并存入该账户,银行的年利率为9%。试计算其到期时的价值。 通过执行fvfix函数命令: FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due) 即可计算出该固定收入现金流的的终值。 变量解释: Rate:周期性收支的利息率,以小数的形式输入; NumPeriods:周期性收支的次数; Payment:每期收支的现金流数额; PresentVal:初始余额 Due:收支被预定或确定的时间:0表示在期末收支(默认值),1表示在期初收支(任选)。 输入命令: >>FutureVal = fvfix(0.09/12, 12*10, 200, 1500, 0) 输出结果: FutureVal = 42379.89 即该现金流到期时的价值为42379.89$。 【例2.10】设某投资者期初投资为$10,000,在随后的5年投资期中每年产生的收入流依次为$2000、$1500、$3000、$3800、$5000,年利率为8%。试计算该现金流到期时的价值。 通过执行fvvar函数命令: FutureVal = fvvar(CashFlow, Rate, IrrCFDates) 即可求出这个规则(周期性的)现金流的终值。 输入命令: >>FutureVal = fvvar([-10000 2000 1500 3000 3800 5000], 0.08) 输出结果: FutureVal = 2520.47 即该现金流到期时的价值为2520.47$。 如果期初投资的$10,000产生的是一个不规则的现金流(如下所示),则计算时要将期初的投资和各个现金流发生的日期也考虑进去。利率为9%。

天津大学matlab讲义-应用基础第二章

第2章MATLAB程序设计 MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。 2.1 顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。 2.1.1 表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x + y, sin(x); –5 最后的表达式值暂保存在变量ans中。 2.1.2 赋值语句 格式: v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句 格式:

, ; 2.1.4 输入语句 1、input语句(实际上是函数) 格式1: input(提示字符串) 功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式2: input(提示字符串,'s') 功能: 显示提示字符串,并把输入视为字符串 2、yesinput语句 格式: yesinput(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。 如: t=yesinput('指定线的颜色',… 'red','red|blue|green') 运行结果如下: 指定线的颜色(red):yellow %不在值内 指定线的颜色(red):blue %重输 t = blue x=yesinput('输入元素个数',10,[1,20]) 运行结果如下: 输入元素个数(10): x = 10 3、Keyboard语句 格式: Keyboard 功能: 暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return命令而返回相应的M-文件继续执行。本语句用于调试M-文件。 4、pause语句 格式1: pause 功能:暂停,敲下任一键继续 格式2: pause(n)

matlab串口通信基础讲义

matlab串口通信基础讲义 ①支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信; ②通信数据支持二进制和文本(ASCII)两种方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)语言; ③支持异步通信和同步通信; ④支持基于事件驱动的通信。 从以上的Matlab设备控制工具箱的特点可以看到,Matlab完全可以满足我们实现串行通信的要求。 3.1 Matlab对串行口控制的基础知识 Matlab对串行口的编程控制主要分为四个步骤。 ①创建串口设备对象并设置其属性。 scom=serial('com1');%创建串口1的设备对象scom scom.Terminator='CR';%设置终止符为CR(回车符),缺省为LF(换行符) scom.InputBufferSize=1024;%输入缓冲区为256B,缺省值为512B scom.OutputBufferSize=1024;%输出缓冲区为256B,缺省值为512B scom.Timeout=0.5;%Y设置一次读或写操作的最大完成时间为0.5s,缺省值为10s s.ReadAsyncMode='continuous'(缺省方式);%在异步通信模式方式下,读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中. 注意:在些属性只有在对象没有被打开时才能改变其值,如InputBufferSize、OutputBufferSize属性等。对于一个RS-232/RS-422/RS-485串口设备对象,其属性的缺省值为波特率9 600b/s,异步方式,通信数据格式为8位数据位,无奇偶校验位,1位停止位。如果要设置的串口设置对象的属性值与缺省值的属性值相同,用户可以不用另行设置。 另外,设置串口设置对象的属性也可以用一条指令完成,如:scom=serial('COM1','BaudRate',38400,'Parity','none','DataBits',8,'StopBits',1)。也可以用set命令,如set(scom,'BaudRate',19200,'Parity','even')。创建了对象后可以在Matlab命令窗口直接敲对象名并回车,看到其基本属性和当前状态。若需要知道其全部的属性,可以用get(scom)命令。

基于MATLAB的时序逻辑电路设计与仿真上课讲义

基于M A T L A B的时序逻辑电路设计与仿真

课程设计任务书 学生姓名:田鑫专业班级:电子科学与技术 0703 班 指导教师:钟毅工作单位:信息工程学院 题目: 基于MATLAB的时序逻辑电路设计与仿真 初始条件: MATLAB 软件微机 要求完成的主要任务: 深入研究和掌握数字电路中时序逻辑电路的理论知识。利用MATLAB强大的图形处理功能、符号运算功能和数值计算功能,实现时序逻辑电路的设计和仿真。 一、以寄存器为例仿真下列波形 并行寄存器输出波形(以基本RS触发器构造); 移位寄存器输出波形(用D触发器构造) 二、以双向移位寄存器为例实现子系统的设计和封装并仿真下列波形 4位双向移位寄存器并行输出波形; 4位双向移位寄存器串行右移输出波形; 4位双向移位寄存器串行左移输出波形 三、以扭环计数器为例仿真下列波形 扭环计数器的输出波形(以JK触发器实现) 时间安排:

学习MATLAB语言的概况第1天 学习MATLAB语言的基本知识第2、3天 学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天 课程设计第6-9天 答辩第10天 指导教师签名: 年月日 系主任(或责任教师)签名:年月日

目录 摘要 (4) Abstract (4) 绪论 (1) 1M A T L A B简介 (2) 1.1 MATLAB程序设计 (2) 1.2M A T L A B的特点 (2) 1.3MATLAB程序设计 (2) 1.4 M文件 (2) 1.5 SIMULINK仿真设计 (3) 1.5.1创建和使用模型 (3) 1.5.2选择和定制模块 (3) 1.5.3建立和编辑模型 (4) 1.5.4配置子系统 (4) 1.5.5条件执行子系统 (4) 2时序逻辑电路设计 (5) 2.1锁存器和触发器 (5) 2.1.1双稳态 (5)

讲义2 Matlab基本语句

讲义2 Matlab基本语句 一. 程序控制语句 1. 循环语句 MATLAB的循环语句包括for循环和while循环两种类型。 1)for循环 语法格式: for 循环变量 = 起始值:步长:终止值 循环体 end 起始值和终止值为一整形数,步长可以为整数或小数,省略步长时,默认步长为1。执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则小于)则执行循环体,执行完毕后加上步长,大于(步长为负时则小于)终止值后退出循环。 例1给矩阵A、B赋值。 MATLAB 语句及运行结果如下: k=5; a=zeros(k, k) %矩阵赋零初值 for m=1 : k for n=1: k a(m,n)=1/(m+n-1) end end for i=m : -1 : 1 b(i)=i end 运行结果: a= 1.0000 0.5000 0.3333 0.2500?0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 b= 1 2 3 4 5 2) while循环 语法格式: while 表达式 循环体 end 其执行方式为:若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。 例2 a=3; while a a=a-1 end 输出: a=2 a=1 a=0 2. 条件转移语句 条件转移语句有if和switch两种。 1) if语句 MATLAB中if语句的用法与其他高级语言相类似,其基本语法格式有以下几种: 格式一: if 逻辑表达式 执行语句 end

相关文档