矩阵的相关运算
2.3.1 算术运算
- 运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。
- MATLAB有两类不同的算术指令运算:基本算术运算和点运算。
1.基本算数运算符
(1)矩阵的加减运算:
- 分别将矩阵A,B中对应位置的元素进行相加减然后得到新的运算后的矩阵;
ps:A,B矩阵必须是位数相同的。
(2)矩阵的乘法:
- A:mn的矩阵,B:nl的矩阵,A左乘 B所得的积为一个m*l 的矩阵C
- 矩阵左乘的步骤:用A的第1行各个数与B的第1列各个数对应相乘后加起来,就是乘法结果中第1行第1列的数;以此类推
(注意:矩阵A的列数与矩阵 B 的行数相等)
(3)矩阵的除法:
- 除法分为: 左除\和右除/
- 如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)* B和B*inv(A)。
(4)矩阵的乘方:
- A^x
- 要求A为方阵
- x为标量。
(5)矩阵的转置:
- ’ 表示对实数矩阵进行行列互换,而对复数矩阵进行共轭转置。
- 操作符 .’ 表示对复数矩阵进行转置。
2.点运算
- 点运算:运算符前面加点。
- 是指向量或者矩阵中对应位置的元素进行点对点的相关运算。同时要求两个矩阵的维数必须相同。
ps: - “.+”与“+”、“.-”和“-”效果相同,故在MATLAB中并没有定义“.+”和“.-”运算。
- A.\B相当于矩阵B中的每个元素除以矩阵A中对应元素的值,A./B则相当于矩阵A中的每个元素除以矩阵B中对应元素的值。
- 向量或矩阵与一个常数的运算相当于整个向量和矩阵的每一个元素都与该常数进行相应的运算。
A = [1 2 3;4 5 6; 1 1 0];
B = [1 5 8;2 4 7; 0 1 0];
C = A .* B
D = A * B
C =
1 10 24
8 20 42
0 1 0 %对应位置相乘
D =
5 16 22
14 46 67
3 9 15
2.3.2 关系运算
-
6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。
-
关系运算符的运算法则为:
-
当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
-
当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
-
当参与比较的一个是标量和矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
2.3.3 逻辑运算
- 3种逻辑运算符:&(与)、|(或)和~(非)。(对于数值的逻辑运算,与其他语言基本相同不再赘述)
-
若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。
-
若参与逻辑运算的一个是标量和矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。
ps:在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
- 逻辑函数。
- ①利用all函数可以测定矩阵所有元素是否非零,如果所有元素非零,则为真。
- ②any函数可以测试出矩阵中是否含有非零值。
- ③find函数可以找出矩阵中的非零元素及其位置。
- ④exist函数可以测定文件是否存在,它可在装入数据文件之前对数据文件作检测。
- ⑤利用is*这一组函数可对矩阵进行各种检测,其中isnan函数可从阵列中检测出非数值(NaN)。当阵列中包含有NaN时,则基于这一阵列的任何函数值也为NaN,因此在数据处理之前,一般应对数据进行分析,删去包含有NaN的测量样本
>> A=[1 0 2 0 5;5 1 0 5 2;0 4 5 0 5;1 2 5 0 4;5 0 5 3 0]
A =
1 0 2 0 5
5 1 0 5 2
0 4 5 0 5
1 2 5 0 4
5 0 5 3 0
>> B=ones(3,6)
B =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
>> all(A)
ans =
0 0 0 0 0
>> all(B)
ans =
1 1 1 1 1 1
>> any(A)
ans =
1 1 1 1 1
>> any(B)
ans =
1 1 1 1 1 1
>> find(A)
ans =
1 2 4 5 7 8 9 11 13 14 15 17 20 21 22 23 24