第2章 MATLAB的基本功能.docx

上传人:b****6 文档编号:7316185 上传时间:2023-01-22 格式:DOCX 页数:38 大小:656.50KB
下载 相关 举报
第2章 MATLAB的基本功能.docx_第1页
第1页 / 共38页
第2章 MATLAB的基本功能.docx_第2页
第2页 / 共38页
第2章 MATLAB的基本功能.docx_第3页
第3页 / 共38页
第2章 MATLAB的基本功能.docx_第4页
第4页 / 共38页
第2章 MATLAB的基本功能.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

第2章 MATLAB的基本功能.docx

《第2章 MATLAB的基本功能.docx》由会员分享,可在线阅读,更多相关《第2章 MATLAB的基本功能.docx(38页珍藏版)》请在冰豆网上搜索。

第2章 MATLAB的基本功能.docx

第2章MATLAB的基本功能

第2章MATLAB的基本功能

2.1变量和数据操作

2.1.1变量与赋值

1.变量命名

在MATLAB6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。

在MATLAB中,变量名区分字母的大小写。

2.赋值语句

(1)变量=表达式

(2)表达式

其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。

例2-1计算表达式的值,并显示计算结果。

在MATLAB命令窗口输入命令:

x=1+2i;

y=3-sqrt(17);

z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))

其中pi和i都是MATLAB预先定义的变量,分别代表代表圆周率π和虚数单位。

输出结果是:

z=

-0.3488+0.3286i

2.1.2预定义变量

在MATLAB工作空间中,还驻留几个由系统本身定义的变量。

例如,用pi表示圆周率π的近似值,用i,j表示虚数单位。

预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。

2.1.3内存变量的管理

1.内存变量的删除与修改

MATLAB工作空间窗口专门用于内存变量的管理。

在工作空间窗口中可以显示所有内存变量的属性。

当选中某些变量后,再单击Delete按钮,就能删除这些变量。

当选中某些变量后,再单击Open按钮,将进入变量编辑器。

通过变量编辑器可以直接观察变量中的具体元素,也可修改变量中的具体元素。

clear命令用于删除MATLAB工作空间中的变量。

who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。

who命令只显示出驻留变量的名称,whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。

2.内存变量文件

利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。

MAT文件的生成和装入由save和load命令来完成。

常用格式为:

save文件名[变量名表][-append][-ascii]

load文件名[变量名表][-ascii]

其中,文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作。

变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。

当变量名表省略时,保存或装入全部变量。

-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理。

save命令中的-append选项控制将变量追加到MAT文件中。

2.2数值计算功能

MATLAB以矩阵为基本的运算单元,向量和标量作为特殊的矩阵处理:

向量看作只有一行或一列的矩阵;标量看作只有一个元素的矩阵。

2.2.1创建数值矩阵

1.直接输入法

直接输入需遵循以下基本规则:

◆整个矩阵应以“[]”为首尾,即整个输入矩阵必须包含在方括号中;

◆矩阵中,行与行之间必须用分号“;”或Enter键(按Enter键)符分隔;

◆每行中的元素用逗号“,”或空格分隔;

◆矩阵中的元素可以是数字或表达式,但表达式中不可包含未知的变量,MATLAB用表达式的值为该位置的矩阵元素赋值。

当矩阵中没有任何元素时,该矩阵被称作“空阵”(EmptyMatrix)。

>>A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

 A=

 1234

5678

9101112

13141516

 

>>B=[1,sqrt(25),9,13

2,6,10,7*2

3+sin(pi),7,11,15

4,abs(-8),12,16]

B=

15913

261014

371115

481216

2.用函数创建

在MATLAB中还提供一些函数用来构造特殊矩阵,这些函数如下表所示。

%ones生成全部元素为1的矩阵

>>ones(3,4)

ans=

1111

1111

1111

>>F=5*ones(3)

F=

555

555

555

%zeros生成全部元素为0的矩阵

>>Z=zeros(2,4)

Z=

0000

0000

 

%rand生成均匀分布的随机矩阵

>>R=rand(4) 

R=

 0.95010.89130.82140.9218

0.23110.76210.44470.7382

0.60680.45650.61540.1763

0.48600.01850.79190.4057

3.利用M文件建立矩阵

对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。

下面通过一个简单例子来说明如何利用M文件创建矩阵。

A=[1,2,3,4,5

6,7,8,9,10

11,12,13,14,15

16,17,18,19,20

21,22,23,24,25]

(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:

(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。

(3)在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。

4.向量的构造方法

向量是组成矩阵的基本元素之一。

向量元素需要用方括号括起来。

元素之间用空格和逗号分隔生成行向量,用分号隔开生成列向量。

可以把行向量看成1n阶矩阵,把列向量看成n1阶矩阵。

(1)直接输入法

向量元素用“[]”括起来,元素之间用空格、逗号或者分号相隔。

需要注意的是,用它们相隔生成的向量形式是不相同的:

用空格或逗号生成行向量;用分号生成列向量。

>>a2=[15,21,27,93,101]

>>a1=[15;21;27;93;101]

(2)利用冒号(:

)生成行向量

当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。

针对该种情况,可以使用冒号(:

)来生成等差元素向量。

即:

e1:

e2:

e3,其中e1,e3为上下界,e2为步长,e2省略是默认为1

>>x=0:

0.5:

2

x=

00.50001.00001.50002.0000

>>y=2:

6

y=

23456

(3)利用linspace/logspace生成向量

其调用格式为:

linspace(a,b,n)其中a和b是生成向量的第一个和最后一个元素,n是元素总数。

logspace(a,b,n)生成有n个元素的行向量,其元素起点x

(1)=10a,终点x(n)=10b。

>>a=linspace(-6,6,4)

a=

-6-226

>>b=logspace(0,2,4)

b=

1.00004.641621.5443100.0000

2.2.2矩阵下标引用

本小节将介绍通过矩阵下标来存取元素值的方法,包括访问单个元素、线性引用元素和访问多个元素等。

1.访问单个元素

•2.线性引用元素

Ø对于矩阵A,线性引用元素的格式为A(k)。

通常这样的引用用于行向量或列向量,但也可用于二维矩阵。

ØMATLAB按列优先排列的一个长列向量格式(线性引用元素)来存储矩阵元素。

k为矩阵元素的序号

•显然,序号(Index)与下标(Subscript)是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。

其相互转换关系也可利用sub2ind和ind2sub函数求得

3.访问多个元素

操作符“:

”可以用来表示矩阵的多个元素。

若A是二维矩阵,其主要用法如下:

ØA(:

:

)返回矩阵A的所有元素。

ØA(i,:

)返回矩阵A第i行的所有元素。

ØA(i,k1:

k2)返回矩阵A第i行的自k1到k2列的所有元素。

ØA(:

j)返回矩阵A第j列的所有元素。

ØA(k1:

k2,j)返回矩阵A第j列的自k1到k2行的所有元素。

若A是多维矩阵,也可以通过类似的方法实现对其访问。

4利用空矩阵删除矩阵的元素

要删除矩阵的某一行或者是某一列,只需将该行或者该列赋予一个空矩阵[]即可。

•2.2.3矩阵运算

1.矩阵的基本运算

矩阵的基本算术运算有:

+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)等,算数运算符的用法和功能如下表所示

(1)矩阵加减运算

假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。

运算规则是:

若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。

如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。

(2)矩阵乘法

ØA*B:

相乘

假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。

Øa*A:

数乘

标量a和矩阵A中的各元素一一相乘

>>A=[3,8,9;0,3,3;4,8,9]

A=

389

033

489

>>2*A

ans=

61618

066

81618

ØA.*B:

点乘

元素相乘,A.*B相当于A和B对应的元素相乘,A和B必须是具有相同长度的矩阵。

>>A.*B

ans=

242481

0243

12729

>>A*B

ans=

6715444

15516

7515753

(3)乘方

ØA.^B:

元素的乘方

元素的乘方,A和B必须是具有相同长度的矩阵,除非他们之一为标量。

一个标量可以与任何一个矩阵乘方,如A^2,2^A等。

ØA^B:

矩阵的乘方

当A和B都为矩阵时,此运算无定义;

Ø当A和B都是标量时,表示标量A的B次幂;

Ø当A是标量且B为矩阵时,表示标量A的中各元素次幂;

Ø当A为方阵且B为正整数时,表示矩阵A的B次乘积;

(4)矩阵除法

在MATLAB中,有两种矩阵除法运算:

\和/,分别表示左除和右除。

如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。

A\B等效于A矩阵的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。

对于含有标量的运算,两种除法运算的结果相同,如3/4和4\3有相同的值,都等于0.75。

又如,设a=[10.5,25],则a/5=5\a=[2.10005.0000]。

对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。

对于矩阵运算,一般A\B≠B/A。

2矩阵的基本函数

MATLAB提供的部分矩阵分析函数如下表所示。

(1)向量和矩阵的范数norm()

(2)矩阵的秩rank()

(3)矩阵的迹trace()

(4)矩阵的行列式det()

(5)矩阵的特征值与特征向量eig()

(1)向量和矩阵的范数

矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。

范数有多种方法定义,其定义不同,范数值也就不同。

向量的3种常用范数及其计算函数

在MATLAB中,求向量范数的函数为:

Ønorm(V)或norm(V,2):

计算向量V的2—范数。

Ønorm(V,1):

计算向量V的1—范数。

Ønorm(V,inf):

计算向量V的∞—范数。

矩阵的范数及其计算函数与求向量的范数的函数完全相同

(2)矩阵的秩

矩阵线性无关的行数与列数称为矩阵的秩。

在MATLAB中,求矩阵秩的函数是rank(A)。

(3)矩阵的迹

矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。

在MATLAB中,求矩阵的迹的函数是trace(A)。

(4)方阵的行列式

把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。

在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。

(5)矩阵的特征值与特征向量

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:

ØE=eig(A):

求矩阵A的全部特征值,构成向量E。

Ø[V,D]=eig(A):

求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

Ø[V,D]=eig(A,‘nobalance’):

与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。

2.3符号计算

自然科学理论分析中的公式、关系式及其推导是符号计算要解决的问题。

MATLAB数值计算的对象是数值,而符号计算的对象则是非数值的符号字符串。

2.3.1符号对象

1.创建符号对象和表达式

2.符号表达式的运算

MATLAB提供了函数sym()和命令syms创建符号常量、变量、函数以及表达式,函数class()检验符号对象类型。

(symbol(符号)缩写)

1.创建符号对象和表达式

(1)建立符号变量和符号常量

MATLAB提供了两个建立符号对象的函数:

sym和syms,两个函数的用法不同。

Øsym函数

sym函数用来建立单个符号量,一般调用格式为:

符号量名=sym('符号字符串')

该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。

Øsyms函数

函数sym一次只能定义一个符号变量,使用不方便。

MATLAB提供了另一个函数syms,一次可以定义多个符号变量。

syms函数的一般调用格式为:

syms符号变量名1符号变量名2…符号变量名n

用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。

(2)建立符号表达式

含有符号对象的表达式称为符号表达式。

建立符号表达式有以下3种方法:

Ø利用单引号来生成符号表达式。

Ø用sym函数建立符号表达式。

Ø使用已经定义的符号变量组成符号表达式。

例2.3.1:

用上面的三种方法创建符号函数:

f=sinx+cos(2x)

3)创建符号矩阵

Ø直接输入:

直接输入符号矩阵时,符号矩阵的每一行都要用方括号括起来,而且要保证同一列的各行元素字符串的长度相等,因此,较短的字符要插入空格来补齐长度,否则程序会报错。

例2.3.2:

A=[‘[cos(x),sin(x),x]';'[-x+1,x^2+x+1,tanx]']

A=

[cos(x),sin(x),x]

[-x+1,x^2+x+1,tanx]

Ø符号矩阵还可以通过函数sym来生成,符号矩阵中的元素是任何不带等号的符号表达式,各符号表达式的长度可以不同。

例2.3.3:

symsx;

A=sym('[cos(x),sin(x),x;-x+1,x^2+x+1,tanx]')

A=

[cos(x),sin(x),x]

[-x+1,x^2+x+1,tanx]

2.符号表达式的运算

(1)符号表达式的四则运算

符号表达式的加、减、乘、除运算与矩阵的数值运算一样,用“+”、“-”、“*”,“/”符号来实现,幂运算可以由幂运算符“^”来实现。

例2.3.4:

f=sym('4*x+5');

g=sym('2*x^2+5*x+6');

a=f+g

a=9*x+11+2*x^2

f^2

ans=(4*x+5)^2

2)符号表达式的提取分子和分母运算

如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。

其一般调用格式为:

[n,d]=numden(s)

该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。

例2.3.5:

f=sym('a*x^2/(b-x)');

[n,d]=numden(f)

n=a*x^2

d=b-x

(3)符号表达式的化简

MATLAB提供了符号表达式的因式分解与展开的函数,实现对符号计算的结果的化简和替换,函数的调用格式为:

factor(s):

对符号表达式s分解因式。

expand(s):

对符号表达式s进行展开。

collect(s):

对符号表达式s合并同类项。

collect(s,v):

对符号表达式s按变量v合并同类项。

horner(s):

将符号表达式转换成嵌套形式。

simplify(s):

应用函数规则对s进行化简。

simple(s):

用几种不同的算术简化规则对符号表达式进行简化,并显示中间过程。

例2.3.6:

符号表达式分解因子

symsx

f=x^12-1;

factor(f)

•例2.3.7合并符号表达式的同类项

•symsxy

•collect(x^2*y+y*x-x^2-2*x)

•ans=

•(y-1)*x^2+(y-2)*x

例2.3.8符号表达式的展开

symsx

f=(x-1)*(x-2)*(x-3)

expand(f)

ans=

x^3-6*x^2+11*x–6

例2.3.9转换符号表达式为嵌套形式

symsxy

f=x^3-6*x^2+11*x-6

horner(f)

ans=

x*(x*(x-6)+11)-6

(4)符号表达式与数值表达式之间的转换

sym:

可以将数值表达式变换成它的符号表达式。

eval:

可以将符号表达式变换成数值表达式。

例2.3.10:

p='1+sqrt

(2)/2';

eval(p)

ans=1.7071

例2.3.11:

p=1.7071;

n=sym(p)

n=17071/10000

(5)符号表达式中变量的确定

在数学表达式中,一般习惯于用排在字母表前面的字母作为变量系数,而排在字母表后面的字母表示变量。

MATLAB中可以用findsym函数帮助用户查找一个符号表达式中系统默认的符号变量。

该函数的调用格式为:

findsym(s,n)

其中s为用户已经定义符号表达式中,n为正整数,表示查询的符号变量的个数,若没有指定n,则返回s中的全部符号变量。

symsatb

g=sin(a*t)+b;

findsym(g,1)

ans

=t

(6)符号表达式的替换.

(1)函数subexpr()将符号表达式中重复出现的字符串用符号变量代替,其具体使用方法如下:

Ø[Y,SIGMA]=subexpr(S,SIGMA):

指定用符号变量SIGMA来代替符号表达式中重复出现的字符串;

Ø[Y,SIGMA]=subexpr(S,‘SIGMA’):

这种形式和上一种形式的不同在于第2个输入参数是字符或字符串

(2)函数subs()用指定符号替换符号表达式中的某一特定符号,其具体使用方法如下:

R=subs(S,Old,New):

用新符号变量New替代原来符号表达式S中的变量Old。

例2.3.11:

g=sym('2*x^2+5*x+6');

r=subs(g,x,x+1)

r=

2*(1+x)^2+11+5*x

1.符号表达式的极限

A.符号极限

limit函数的调用格式为:

(1)limit(f,x,a):

求符号函数f(x)的极限值。

即计算当变量x趋近于常数a时,f(x)函数的极限值。

(2)limit(f,a):

求符号函数f(x)的极限值。

由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a。

(3)limit(f):

求符号函数f(x)的极限值。

符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。

(4)limit(f,x,a,'right')或limit(f,x,a,'left'):

分别求取符号表达式F的右极限和左极限。

例2.3.12求下列极限。

极限1:

symsamx;%定义符号变量

f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);%定义符号函数

limit(f,x,a)%求极限

ans=

(1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a

极限2:

symsxt;

limit((1+2*t/x)^(3*x),x,inf)%Inf在Matlab里表示无穷大

ans=

exp(6*t)

极限3:

symsx;

f=x*(sqrt(x^2+1)-x);

limit(f,x,inf,'left')

ans=

1/2

极限4:

symsx;

f=(sqrt(x)-sqrt

(2)-sqrt(x-2))/sqrt(x*x-4);

limit(f,x,2,'right')

ans=

-1/2

2.符号表达式的微分

diff(differential)函数用于对符号表达式求导数。

该函数的一般调用格式为:

(1)diff(s):

没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。

(2)diff(s,'v'):

以v为自变量,对符号表达式s求一阶导数。

(3)diff(s,n):

按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。

(4)diff(s,'v',n):

以v为自变量,对符号表达式s求n阶导数。

例2.3.13求函数放f=sin(ax)的导数。

具体代码如下:

symsax%定义符号变量

f=sin(a*x);%定义符号表达式

df=diff(f);%对默认变量x求一阶导数

df2=diff(f,2);%对默认变量x求二阶导数

运行结果为:

df=

cos(a*x)*a

df2=

-sin(a*x)*a^2

3.符号表达式的积分

符号积分由函数int来实现。

该函数的一般调用格式为:

(1)int(s):

没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。

(2)int(s,v):

以v为自变量,对被积函数或符号表达式s求不定积分。

(3)int(s,v,a,b):

求定积分运算。

a,b分别表示定积分的下限和上限。

该函数求被积函数在区间[a,b]上的定积分。

a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。

当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。

当a,b中有一个是inf时,函数返回一个广义积分。

当a,b中有一个符号表达式时,函数返回一个符号函数。

例2.3.14计算函数的积分:

symsx

r1=int(-2*x/(1+x^2)^2)%对符号表达式进行不定积分

r2=int(-2*x/(1+x^2)^2,1,2)%对符号表达式进行定积分

运行结果

r1=

1/(x^2+1)

r2

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

当前位置:首页 > PPT模板 > 动物植物

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

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