MATLAB编程与应用系列-第3章 矩阵运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB编程与应用系列-第3章 矩阵运算相关的知识,希望对你有一定的参考价值。

本系列教程来源于出版设计《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:[email protected]。 出版社:人民邮电出版社, 页数:525。

本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected]

###3.1.8 矩阵和数组运算比较
在进行矩阵和数组运算的时候,要认识到矩阵和数组类似运算的区别,两种运算指令形式和实质内涵的异同见表3.3。其中S为标量,A、B为矩阵。
表3.3 矩阵和数组运算对比表
数组运算 矩阵运算
命令 含义 命令 含义
A+B 对应元素相加 A+B 与数组运算相同
A-B 对应元素相减 A-B 与数组运算相同
S.*B 标量S分别与B元素的积 S*B 与数组运算相同
A.*B 数组对应元素相乘 A*B 内维相同矩阵的乘积
S./B S分别被B的元素左除 SB B矩阵分别左除S
A./B A的元素被B的对应元素除 A/B 矩阵A右除B即A的逆阵与B相乘
B.A 结果一定与上行相同 BA A左除B(一般与上行不同)
A.^S A的每个元素自乘S次 A^S A矩阵为方阵时,自乘S次
A.^S S为小数时,对A各元素分别求非整数幂,得出矩阵 A^S S为小数时,方阵A的非整数乘方
S.^B 分别以B的元素为指数求幂值 S^B B为方阵时,标量S的矩阵乘方
A.’ 非共轭转置,相当于conj(A’) A’ 共轭转置
exp(A) 以自然数e为底,分别以A的元素为指数求幂 expm(A) A的矩阵指数函数
log(A) 对A的各元素求对数 logm(A) A的矩阵对数函数
sqrt(A) 对A的各元素求平方根 sqrtm(A) A的矩阵平方根函数
f(A) 求A各个元素的函数值 funm(A,’FUN’) 矩阵的函数运算

注意:(1)funm(A,’FUN’)要求A必须是方阵,“FUN”为矩阵运算的函数名。
(2)在执行数组与数组之间的运算的时候,参与运算的数组必须同维,运算所得的结果数组也总与原数组同维。

###3.1.9 关系操作和逻辑操作
在使用MATLAB语言进行程序设计时,经常会涉及到程序流程的控制,此时需要对一些问题作出一些判断,为此MATLAB提供了关系操作、逻辑计算以及一些相关的运算函数。

(1)关系运算
关系操作符有:<(小于关系)、<=(小于或等于关系)、>(大于关系)、>=(大于或等于关系)、= =(等于关系)、~=(不等于关系)。

关系运算规则为:

  • 若两个变量都是标量,则结果为真(1)或假(0);
  • 若两个变量都是数组,则必须大小相同,结果也是同样大小的数组,数组的元素为0或1;
  • 若一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组,数组的元素为0或1。
  • 其中<、<=和>、>=,仅对参加比较变量的实部进行比较,而= =和~=,则同时对实部和虚部进行比较。

【例3.20】关系运算
在命令窗口中输入以下内容,生成矩阵A和矩阵B:
&gt;&gt; A=[1 2 3 4 5;5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9];
&gt;&gt; B=[5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9;4 5 6 7 8];
①判断矩阵A、B对应的元素是否相同,并将结果返回给矩阵C1。在命令窗口中输入:
&gt;&gt; C1=A==B %A、B矩阵对应元素相等的返回1,否则返回0
②判断矩阵A的元素是否大于等于矩阵B对应的元素,并将结果返回给矩阵C2。在命令窗口中输入:
&gt;&gt; C2=A&gt;=B %A、B矩阵对应元素A大于等于B的返回1,否则返回0
③判断矩阵A、B对应的元素是否不相同,并将结果返回给矩阵C3。在命令窗口中输入:
&gt;&gt; C3=A~=B %A、B矩阵对应元素相等的返回0,否则返回1

(2) 逻辑运算
逻辑操作符有:&(与)、|(或)、~(非)和xor(异或)。在逻辑运算中,非0元素表示真(1),0元素表示假(0),逻辑运算的结果为0或1,逻辑运算法则具体见表3.5所示。

表3.5 逻辑运算

a b a&b a or b ~a xor(a,b)
0 0 0 0 1 0
0 1 0 1 1 1
1 0 0 1 0 1
1 1 1 1 0 0

逻辑操作的需要满足以下运算规则:

  • 若两个变量都是标量,则结果为0、1的标量;
  • 若两个变量都是数组,则必须大小相同,结果也是同样大小的数组;
  • 若是一个数组和一个标量进行逻辑运算,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组。

除了上面的逻辑操作符外,MATLAB还提供了&&(先决与)逻辑运算符和||(先决或)逻辑运算符。

&&(先决与)逻辑运算符是当该运算符的左边为1(真)时,继续执行该运算符右边的运算,并执行与逻辑运算;否则,不再执行该运算符右边的运算,并立即给出运算的结果为0(假)。

||(先决或)逻辑运算符是当该运算符的左边为1(真)时,就不需要继续执行该符号右边的运算,并立即得出该逻辑运算结果为1(真);否则,就要继续执行该符号右边的运算,并执行或逻辑运算。

【例3.21】逻辑运算
在命令窗口中输入以下内容,生成矩阵A和矩阵B:
&gt;&gt; A=[1 2 3 4 5;5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9];
&gt;&gt; B=[5 3 4 8 5;6 8 7 6 9;2 6 8 2 1;2 7 9 3 9;4 5 6 7 8];
①若计算A和B之间逻辑与的值,并将结果返回给矩阵C1。在命令窗口中输入:
&gt;&gt; C1=A&B %计算A和B之间逻辑与的值
②若计算A和B之间逻辑或的值,并将结果返回给矩阵C2。在命令窗口中输入:
&gt;&gt; C2=A|B %计算A和B之间逻辑或的值
③若计算A的逻辑非,并将结果返回给矩阵C3。在命令窗口中输入:
&gt;&gt; C3=~A %计算A的逻辑非
④若计算A和B之间逻辑异或,并将结果返回给矩阵C4。在命令窗口中输入:
&gt;&gt; C4=xor(A,B) %计算A和B之间逻辑异或

【例3.22】先决逻辑运算
在命令窗口中输入以下变量a、b和c:
&gt;&gt; a=0;
&gt;&gt; b=5;
&gt;&gt; c=10;
①进行先决与操作,在命令窗口中输入以下内容:
&gt;&gt; (a~=0)&&(b&lt;c)
运算结果如下:
ans =<br/>0
②进行先决与操作,在命令窗口中输入以下内容:
&gt;&gt; (a~=0)||(b&lt;c)
运算结果如下:
ans =<br/>1

(3)逻辑函数运算

MATLAB中提供的一些函数返回的结果为真(1)和假(0),这样的函数包括关系逻辑函数、工作状态判断函数、特殊数据判断函数和数据类型函数。表3.6所示为关系逻辑函数以及对应的功能描述。

表3.6 关系逻辑函数

函数名 功能 函数名 功能
all(A) 判断A的列向量元素是否全非0,全非0则为1 isnan(A) 判断A的各元素值是否为NAN,是则为1
any(A) 判断A的列向量元素中是否有非0元素,有则为1 isnumeric(A) 判断数组A的元素是否全为数值型数组
isequal(A,B) 判断A、B对应元素是否全相等,相等为1 isreal(A) 判断数组A的元素是否全为实数,是则为1
isempty(A) 判断A是否为空矩阵,为空则为1,否则为0 isprime(A) 判断A的各元素值是否为质数,是则为1
isfinite(A) 判断A的各元素值是否有限,是则为1 isspace(A) 判断A的各元素值是否为空格,是则为1
isinf(A) 判断A的各元素值是否无穷大,是则为1 find(A) 寻找A数组非0元素的下标和值

(4)运算符优先级

MATLAB提供了多种运算符号,各种运算符执行的先后顺序是根据其所具有的优先级来决定的。下面列出了各种运算符的优先级顺序,由上至下优先级递减,每行的优先级相同:

a) 括号()
b) ‘(矩阵转置)、^ (矩阵幂)和.‘(数组转置)、.^(数组幂)
c) ~(逻辑非)、代数正+、代数负-
d) (乘)、/(左除)、(右除)和.(点乘)、./(点左除)、.(点右除)
e) +、-(加减)
f) 冒号:
g) <、<=、>、>=、~=
h) &(逻辑与)
i) |(逻辑或)
j) &&(先决与)
k) ||(先决或)

作者:德特数据
联系方式:[email protected]

以上是关于MATLAB编程与应用系列-第3章 矩阵运算的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB编程与应用系列-第3章 矩阵运算

MATLAB编程与应用系列-第3章 矩阵运算

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作