Matlab学习笔记 Day5
注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。
1.矩阵的算数运算
利用help ops命令可以看到Matlab中的运算符及特殊符号的用法
(1)加减运算
C=A+B plus(A,B)
C=A-B minus(A,B)
C=+A uplus(A)
C=-A uminus(A)
如果A、B中有一个是标量,则用该标量和矩阵的每个元素分别进行运算,否则size(A)==size(B)时才可以进行加减运算。
(2)乘法运算
C=A*B mtimes(A,B)
如果A、B中有一个是标量,则用该标量和矩阵的每个元素分别进行运算,否则只有当A的列数等于B的行数才能进行以上运算。
(3)乘方运算
A^k mpower(A,k)
A必须是方阵,K是整数时表示k个A按矩阵乘法相乘
(4)除法运算
左除:A\B mldivide(A,B)
当A为可逆矩阵时,A\B=inv(A)B
x=A\b为线性方程组 A×x=b的解
设size(A)==[m,n],当m>n(或m<n)时, x=A\b为线性方程组Ax=b的最小二乘(最小二范数)解。
右除:A/B
A/B=A*inv(B) mrdivide(A,B)
当B为标量时,表示用A的每个元素除以B
例子:求解线性方程组
>> A = [2,2,-1,1;4,3,-1,2;8,3,-3,4;3,3,-2,-2];
>> B = [4,6,12,6]';
>> x = A\B %等价于 x = inv(A)*b
x =
0.6429
0.5000
-1.5000
0.2143
注意:B是一个列向量。实数矩阵可以用在 [ ] 外加 ’ 的方式变成列向量,[4,6,12,6]'在实数矩阵的情况下等价于[4;6;12;6](见(5))
(5)矩阵的转置
A’表示矩阵A的共轭转置,也可以写成ctranspose(A)
A.'表示矩阵A(非共轭)转置,A.'也可以写成transpose(A)
当A是实矩阵时,A’和A.'相同。
2.数组运算(点运算)
在运算符* \ / ^ 前面加.号表示数组运算(或称为点运算)
A.*B也可以写作times(A,B)
C=A.\B也可以写作C=ldivide(A,B)
执行后C(i,j)=B(i,j)/A(i,j)
C=A./B也可以写作C=rdivide(A,B)
执行后C(i,j)=A(i,j)/B(i,j)
A.^B 也可以写作power(A,B)
A和B中有一个为标量时,则用该标量分别和矩阵的每个元素进行运算。除上述情况外,只有当size(A)==size(B)时A和B才可以进行数组运算(或称为点运算),A和B的对应元素进行运算。
3.关系和逻辑运算
关系和逻辑运算的结果是一个由0或1组成的逻辑数组,1表示真,0表示假。逻辑型是数值型的子类。
①关系运算(==、~=、<、<=、>、>=)
两个标量:直接比较大小
两个同型矩阵:逐个按标量关系比较大小,得到一个由0和1组成的矩阵
一个标量,一个矩阵:标量与每一个元素比较大小,得到由0和1组成的矩阵
对于复数,<、<=、>、>=仅比较实部;剩下需要对实部和虚部都进行比较。
②逻辑运算(~、&、|、xor、&&、||)
其中,~、&、|与C语言运算相同
xor(a,b):是a和b中恰好一个为0一个不为0,运算结果为1,否则为0
a&&b:先决与,当a为0则结果为0,不计算右边表达式的值(类似于C某些编译器中的断路)
a||b:先决或,当a为1则结果为1,不计算右边表达式的值
当a和b为标量时,&&、|| 才有意义。
4.一些基本的数学运算函数
(1)函数库elfun
(2)函数库specfun(特殊函数、误差函数)
重点:
dot(a,b)计算a和b的点积
cross(a,b)计算三维向量a和b的叉积
dot(cross(a,b),c)计算三维向量的混合积
(3)函数库datafun(数值微分、梯度、傅里叶变换、滤波与卷积)
max函数、min函数、mean函数(平均值)、median函数(中值)、sum函数、std函数(标准偏差)
(4)函数库matfun(矩阵分析、线性方程求解、矩阵分解)
inv(A)逆矩阵、det(A)行列式、rank(A)矩阵的秩
DAY5体会:矩阵和向量的东西虽然很多很杂,但大部分和函数有关,再次印证MATLAB的库功能十分强大,很多相关问题都可以求解。到了相关函数部分,很多不需要一个一个敲代码再尝试,而是直接看懂库里面大概内容,遇到问题再用help调用也来得及。