矩阵运算Word下载.docx

上传人:b****8 文档编号:22496050 上传时间:2023-02-04 格式:DOCX 页数:18 大小:54.74KB
下载 相关 举报
矩阵运算Word下载.docx_第1页
第1页 / 共18页
矩阵运算Word下载.docx_第2页
第2页 / 共18页
矩阵运算Word下载.docx_第3页
第3页 / 共18页
矩阵运算Word下载.docx_第4页
第4页 / 共18页
矩阵运算Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

矩阵运算Word下载.docx

《矩阵运算Word下载.docx》由会员分享,可在线阅读,更多相关《矩阵运算Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

矩阵运算Word下载.docx

347843503146

(b)令x和y为:

X=(123)y=

命令s=x*y,M=y*x,结果为:

S=M=

321123

102030

100200300

MATLAB也包含其他乘积。

命令dot(x,y)得到具有相同元素数量的两个向量x和y的点

积,也称为标量积或内积。

如果点积为零,则两个向量是正交的。

如果A和B具有相同的维数,则定义两个矩阵A和B的点积,在MATLAB中定义列方式。

其结果是一个行向量,其元素是第1列、第2列等的点积,可参见附录B。

命令集23点积

dot(x,y)得到向量x和y的点积

dot(A,B)得到一个长度为n的行向量,这里的元素是A和B对应列的点积。

阵A和B必须是具有相同的维数m×

n。

多维矩阵可参见helpdesk。

dot(A,B,dim)在dim数组中给出A和B的点积。

38MATLAB5手册下载

■对于各具三个元素的两个向量x和y,命令cross(x,y)给出向量积或叉积,即:

y=(x2y3-x3y2x3y1-x1y3x1y2-x2y1)

对向量x和y,向量x×

y是正交的。

cross命令也可以应用于3×

n矩阵,其结果是一个3×

n矩阵,这里的第i列是A和B中的第i列的叉积。

命令集24叉积

cross(x,y)得到向量x和y的叉积。

cross(A,B)得到一个3×

n矩阵,其中的列是A和B对应列的叉积。

阵A和B必须具有相同的维数3×

cross(A,B,dim)在dim数组中给出向量A和B的叉积。

A和B必须具有相同

的维数,size(A,dim)和size(B,dim)必须是3。

■例3.3

假设:

x=(100)y=(010)

命令crossprod=cross(x,y),得到:

crossprod=

001

对x和y,它是正交的,即:

scalar1=dot(x,crossprod),scalar2=dot(y,crossprod)

得:

Scalar1=scalar2=

10

在MATLAB中,有一个完成二维矩阵卷积的函数。

可以使用FIR滤波器(有限脉冲响应)作为一个自变量,这部分内容在helpdesk中描述。

命令集25矩阵的卷积

conv2(A,B)返回矩阵A和B的二维卷积

conv2(hcol,hrow,A)矩阵A与向量hcol列方式和向量hrow行方式的卷积。

conv2(…,format)得到一个卷积的特殊形式。

参数format必须是下列

字符串之一:

‘same’返回最接近中心的部分卷积,其维数与A相同。

‘valid’仅返回不考虑边缘补零计算的部分卷积。

convn(A,B)返回矩阵A和B的多维卷积。

convn(…,format)得到卷积的一个特殊形式,如上所示。

第3章矩阵运算39下载

■Kronecker张量积可以用于创建大的矩阵,它由命令kron(A,B)得到。

如果A是一个m×

n矩阵,B是一个k×

r矩阵,那么这个命令就返回一个m·

n的矩阵。

命令集26张量积

kron(A,B)得到A和B的Kronecker张量积。

■例3.4

命令K=kron(A,B)的结果为:

K=

246000

202000

-1-2-3123

-10-1101

3.3除法

在MATLAB中,有两个矩阵除法的符号,左除\和右除/。

如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)*B和B*inv(A)。

可是,MATLAB执行它们时是不同的,如例3.5所示。

A的逆,inv(A)或A-1在第7.1节中介绍。

如果A是一个方阵,那么X=A\B是矩阵方程AX=B的解A-1B,这里的X具有与B相同的维数。

在B=b是一个列向量这样一个特殊情况下,x=A\b是线性系统AX=b的解。

参见第7.2节。

如果A是一个m>

n的m×

n矩阵,X=A\B得到矩阵方程AX=B的最小二乘解,参见第7.7节。

矩阵方程XA=B的解是X=B/A,它等同于(A′\B′)′,即右除可以由左除定义。

这里,撇号′表示转置,这将在第3.4节中进行说明。

■例3.5

(a)设A和B如例3.1一样定义,命令

A,B,Right=B/A,Left=A\B得到:

A=B=Right=Left=

1256-12-3-4

3478-2345

下载

■如果输入Right=B*inv(A)和Left=inv(A)*B,则得到

Right=Left=

-1.00002.0000-3.0000-4.0000

-2.00003.00004.00005.0000

这分别与用/和\计算的矩阵结果是一致的,但浮点格式表明它们的计算过程是不一样的。

(b)设下列A和b:

b=

系统Ax=b的解在MATLAB中写作x=A\b,得到:

X=1.00002.00003.0000

(c)使用如上的A和b,检查求解系统Ax=b的运算次数。

命令flops(0);

x=inv(A)*b;

flops给出结果:

ans=

109

命令flops(0);

X=A\b;

flops给出结果:

72

因此,在MATLAB中求解一个系统用左除比用逆和乘法所需的运算次数要少。

命令

flops的定义参见第2.5节。

3.4转置和共轭

一个重要的运算是转置和共轭转置,它在MATLAB中用撇´

表示。

在课本中,这种运算经

常用*和H表示

如果A是一个实数,那么它被转置时,第1行变成第1列,第2行变成第2列,依此类推,一个m×

n矩阵变为一个n×

m矩阵。

如果矩阵是方阵,那么这个矩阵在主对角线反映出来。

如果矩阵A的元素aij是复数,那么所有元素也是共轭的。

矩阵A´

在项(i,j)上含有。

如果仅希望转置,在撇号之前输入一点.´

,A.´

表示转置,其结果与conj(A´

)相同。

如果A是实数,那么A´

与A.´

相同。

■例3.6

假设A和b与例3.5(b)相同。

Transp=A´

Transpb=b´

得到:

Transp=Transpb=

110221713

325

541

aji

第3章矩阵运算41下载

■3.5元素操作算术运算

算术运算也可以元素与元素逐次进行。

矩阵的维数要相同,可以是多维的。

如果运算是

由一点进行的,那么这个运算实行的是元素方式。

对于加法和减法,数组运算和矩阵运算没有差别。

数组运算符是:

+-.*./.\.^

注意,.并没有列出,这个点在那种情况下具有不同的含义。

这个操作符仅给出转置,

与¢

相反,¢

给出了共轭转置,详见第3.4节。

■例3.7

假设定义如下矩阵:

C=

(a)A.*B得:

ans=74-10

(b)B./A得:

ans=71-10

(c)B.^2得:

ans=49410

(d)A.^B得:

ans=14-10

(e)基数是标量,而指数是一个矩阵,2.^[1234]得:

24816

(e)C.´

ans=1.0000+2.0000i3.0000+1.0000i

5.0000-2.0000i1.0000+3.0000i

42MATLAB5手册

■可参见例13.1,它也使用了数组运算。

3.6元素操作函数

在MATLAB中预定义的数学标准函数(见第2.4节)是基于矩阵对元素的运算。

如果f是这样一个函数,A是带元素aij的一个矩阵,那么f(A)ij=f(aij)。

如果元素是复数,那么根据这个函数产生的矩阵也可以是复数,矩阵的维数没有改变。

■例3.8

令A、B和C为:

(a)abs(A)得:

ans=035146

(b)cos(B)得:

ans=-1.00001.00000.00000.7071

(c)sin(abs(C))得:

ans=0.98780.000000.7867

数组运算符和数组函数在MATLAB中十分有用,用户可以定义自己的数组函数,并把它

们存放在M文件中,可参见第2.9节。

■例3.9

函数sincos(x)=sin(x)cos(x)是一个非标准MATLAB函数,可是,你可以定义自己的函数sincos并存放在文件sincos.m中。

functiony=sincos(x)

y=sin(x).*cos(x);

可如下调用sincos:

Y1=sincos(pi),y2=sincos([0pi/4pi/2])

Y1=-1.2246e-16

Y2=00.50000.0000

第3章矩阵运算43下载

■看到,应该为0值的y1是一个十分小的数。

事实上,eps是较大的。

如果用一个向量作为一个自变量来调用sincos,因为sin和cos返回向量,所以其结果是一个向量。

当绘制函数图形时,这是十分有用的。

M文件的应用可参见第12章和第13章。

3.7矩阵的乘方与函数

对于二维方阵,A的p次乘方可以用A^p实现。

如果p是一个正整数,那么这个幂可以由许多矩阵乘法运算定义。

对于p=0,得到与A维数相同的同一个矩阵;

当p<

0时,如果A-1存在,可定义A^p,它是与inv(A)^(-p)相同。

象exp(A)和sqrt(A)那样的MATLAB表达式可视为数组运算(参见第3.6节),即它们是对A中元素逐个运算。

MATLAB也能处理方阵函数。

例如

(A的平方根)或

举例如下:

=I+A+

+

+…

命令集27矩阵函数

expm(A)使用Pade近似法计算eA,这是一个内部函数。

expm1(A)使用一个M文件和与内部函数相同的算法计算eA。

expm2(A)使用泰勒级数计算eA。

expm3(A)使用特征值和特征向量计算eA。

logm(A)计算A的对数。

sqrtm(A)计算A1/2。

当A是对称正定阵时,平方根是唯一的。

funm(A,fcn)计算由字符串fcn指定的A的矩阵函数,参见第5.1.4节。

字符串fcn可以是任意的基本函数,如sin、cos等等,参见第2.4节。

例如,expm(A)=funm(A,‘exp’)。

[F,E]=funm(A,fcn)计算如上矩阵函数,但返回结果矩阵F和剩余近似值矩阵E。

polyvalm(p,A)估算矩阵A的一个多项式。

向量p含有多项式的系数。

见第10.1节。

很重要的一点是要区别expm和exp、logm和log等等。

■例3.10

比较exp和expm:

Elementwise=exp(A),Operatorwise=expm(A)

Elementwise=2.71831.00001.00007.3891

Operatorwise=2.7183007.3891

44MATLAB5手册

■3.8关系运算符

MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩

阵中的每个元素与标量进行比较。

关系运算符如下:

<

小于

=小于等于

>

大于

=大于等于

==等于

~=不等于

关系运算符比较对应的元素,产生一个仅包含1和0的具有相同维数的矩阵。

其元素是:

1比较结果是真

0比较结果是假

在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。

圆括号可以改变其顺序。

■例3.11

(a)对预定义变量pi的值和通过命令rat获得的pi的近似值进行比较。

[t,n]=rat(pi),piapprox=t/n;

formatlong,piapprox,pi,piapprox==pi

t=355n=113piapprox=3.14159292035398ans=3.14159265358979ans=0

(b)假设:

A中的元素有大于B中对应的元素吗?

第3章矩阵运算45下载

■Greater=A>

B

Creater=001000010

即A中的项(1,3)和(3,2)的值大于B中对应项的值。

(c)令A如例(b)中假设,A中的元素有大于1的吗?

GreaterThanOne=A>

1

GreaterThanOne=011000110

3.9逻辑运算符

在MATLAB中有四种逻辑运算符:

&

|或

~非

xor异或

逻辑运算符的运算优先级最低。

在一个表达式中,关系运算符和算术运算符的运算级别

要高于逻辑运算符。

xor和or之间的差别在于:

表达式中至少有一个是真,那么or是真;

xor是表达式中有一个是真但不能两者均为真时才为真。

运算符&

和|比较两个相同维数的矩阵,如同前一节一样,它也能使一个标量与一个矩阵

进行比较。

逻辑运算符是按元素比较的。

零元素表示逻辑值假,任何其他值的元素表示逻辑

值真。

其结果是一个包含1和0的矩阵。

命令集28逻辑运算符

A&

B返回一个与A和B相同维数的矩阵。

在这个矩阵中,A和B对应元素

都为非零时,则对应项为1;

有一个为零的项则为0。

A|B返回一个与A和B相同维数的矩阵。

只要有一个为非零,则对应项为1;

两个矩阵均为零时,则为0。

˜A返回一个与A和B相同维数的矩阵。

在这个矩阵中,A是零时,则对

应项为1;

A是非零时,则对应项为0。

xor(A,B)返回一个与A和B相同维数的矩阵。

在这个矩阵中,如果A和B均为

零或均为非零时,则对应项为0;

如果A或B是非零但不是两者同时

为非零时,则对应项为1。

46MATLAB5手册

■3.10逻辑函数

在MATLAB中有几个逻辑函数。

在以下定义的函数中,假设A是一个m×

n的矩阵,x是一个向量。

在一些计算中,很重要的一点是要在给定的矩阵中以一定的特征定位。

例如,在部分选主

元的高斯消去法中,必须在工作列中寻找最大的项。

MATLAB命令find可以用于这种情况。

命令集29查找非零元素

find(x)返回一个x中包含非零元素的下标的向量。

如果所有的元素

都是零,那么返回一个空矩阵,即[]。

find(A)返回一个长的列向量,表示A中包含非零元素的下标向量。

下述命令更可取。

[u,v]=find(A)返回向量u和v,它们包含A中的非零元素的下标,即A中元

素(uk,vk)为非零。

[u,v,b]=find(A)返回包含A中非零元素的下标向量u和v以及一个包含对应非

零元素的向量。

A中元素(uk,vk)为非零并且能在bk中找到。

■例3.12

假设x和A是:

X=(3-406.10)A=

y=

(a)ind=find(x),indcol=find(A)得:

ind=124

indcl=14

即向量x中元素1、2和4是非零值。

要获得indcol,也可以输入:

find(y)

(b)命令find可以与关系运算符一起使用,这样使命令更有用。

例如,index=find(x>

0.5)返回:

index=

14

如果输入greaterThan=x(index),得到:

greaterThan=

3.00006.1000

这就是用向量index寻找x中所有大于0.5的元素。

如果仅想知道x中有多少大于0.5的元素时,可以输入:

length(find(x>

0.5))。

针对上题数据,得到:

ans=2

第3章矩阵运算47下载

(c)要获得A中所有非零元素的索引,输入:

[index1,index2]=find(A)

Index1=12index=12

即元素(1,1)和(2,2)是非零值。

MATLAB有any和all两个函数,用于测试矩阵和向量的逻辑条件。

其结果是逻辑值,0

或1,真或假。

它们在if语句中有特殊的用途,详见第12.1节。

命令集30逻辑函数

(一)

any(x)如果x中的有一个元素为非零值,那么返回1;

否则,返回0。

any(A)对A进行列运算,根据相应列是否包含非零元素,返回一个带1和0的行向量。

all(x)如果所有的元素都是非零值,返回1;

all(A)对A进行列操作,根据相应列是否所有元素都为非零值,返回带1和0的一个行向量。

如果这两个函数之一对一个矩阵进行两次操作,例如any(any(A))和all(all(A))则

返回一个标量1或0。

■例3.13

(a)如果all(x<

=5)返回1,则实向量x中所有的元素都小于或等于5。

如果返回0,则至

少有一个元素大于5。

如果all(all(A<

=5))返回1,则一个矩阵A的所有元素小于或等于5。

(b)对一个实方阵A,如果all(all(A==A′))返回1,则A是对称的。

(c)如果any(any(tril(A,-1)))返回0,则方阵A是上三角阵。

否则,在A中的下三

角阵中至少有一个非零元素。

一个等价的命令是all(all(A==triu(A))),如果A是上三角阵,它就返回1。

也有下列逻辑函数:

命令集31逻辑函数

(二)

isnan(A)返回一个维数与A相同的矩阵,在这个矩阵中,对应A中有

‘NaN’处为1,其他地方为0。

48MATLAB5手册下载

■isinf(A)返回一个维数与A相同的矩阵,在这个矩阵中,对应A中有‘inf’处为1,其他地方为0。

isempty(A)如果A是一个空矩阵,返回1;

否则返回0。

isequal(A,B)如果A和B是相同的,即有相同的维数和相同的内容,则返回1。

isreal(A)如果A是一个不带虚部的实矩阵,则返回1;

否则,返回零。

isfinite(A)返回一个与A维数相同的矩阵。

在这个矩阵中,A中元素是

有限的,则对应元素为1;

否则,为零。

也有针对字符串和其他数据类型的逻辑函数,详见第5章。

第3章矩阵运算49下载

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

当前位置:首页 > 解决方案 > 学习计划

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

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