本系列教程来源于出版设计《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:156204968@qq.com。 出版社:人民邮电出版社, 页数:525。
本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com
###3.1.5 矩阵函数 MATLAB提供了丰富的函数来实现对矩阵的各种运算,下面将逐步介绍。因篇幅关系,将不作数学方面的解释。表3.1所示为常用的矩阵运算函数以及函数相对应的功能描述。 表3.1 常用矩阵运算函数 | 函数名 | 功能 |
---|---|---|
det(X) | 计算方阵行列式 | |
rank(X) | 求矩阵的秩,得出的行列式不为零的最大方阵边长。 | |
trace(X) | 矩阵A的迹b,即A的对角线元素之和 | |
expm(A) | 使用Pade近似算法计算eA,这是一个内部函数,A为方阵 | |
expm1(A) | 使用一个M文件和内部函数相同的算法计算e^A | |
expm2(A) | 使用泰勒级数计算e^A | |
expm3(A) | 使用特征值和特征向量计算e^A | |
logm(X) | 计算矩阵X的对数,它是expm(X)的反函数 | |
funm(X, fun) | 指定的函数fun计算方阵X的函数矩阵 | |
sqrtm(X) | 计算矩阵A的平方根A1/2,相当于X*X=A,求X | |
polyvalm(P, X) | 按照矩阵运算规则计算多项式的值。其中,P为多项式系数向量,方阵X为多项式变量,返回值为多项式值 | |
inv(X) | 求矩阵的逆阵,当方阵X的det(X)不等于零,逆阵X-1才存在。X 与X-1相乘为单位矩阵。 | |
pinv(X) | 求解矩阵X的伪逆B | |
norm(X , ref) | 求解矩阵或者向量的不同范数, ref指定了求解范数的类型 | |
cond(X, p) | 返回矩阵X的p-范数的条件数。如果p=2对应为2范数 | |
[v,d]=eig(X) | 计算矩阵特征值和特征向量。如果方程Xv=vd存在非零解,则v为特征向量,d为特征值。 | |
diag(X) | 产生X矩阵的对角阵 | |
[l,u]=lu(X) | 方阵分解为一个准下三角方阵和一个上三角方阵的乘积。l为准下三角阵,必须交换两行才能成为真的下三角阵。 | |
[q,r]=qr(X) | m×n阶矩阵X分解为一个正交方阵q和一个与X同阶的上三角矩阵r的乘积。方阵q的边长为矩阵X的n和m中较小者,且其行列式的值为1。 | |
[u,s,v]=svd(X) | m×n阶矩阵X分解为三个矩阵的乘积,其中u,v为n×n阶和m×m阶正交方阵,s为m×n阶的对角阵,对角线上的元素就是矩阵X的奇异值,其长度为n和m中的较小者。 |
注意:1. 当矩阵为长方阵时,方程AX=I和XA=I至少有一个无解,这时A的伪逆能在某种程度上代表矩阵的逆,若A为非奇异矩阵,则pinv(A)=inv(A)。
- 在上表中det(a)=0或det(a)虽不等于零但数值很小接近于零,则计算inv(a)时,其解的精度比较低, 用条件数(求条件数的函数为cond)来表示,条件数越大,解的精度越低,MATLAB会提出警告:“条件数太大,结果可能不准确”。
###3.1.6 矩阵转置
矩阵转置的运算符为“'”,“A'”表示矩阵A的转置,若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。
“A.'”表示数组A的转置,如果数组A为复数数组,则仅表示复数矩阵数组的转置,而不进行矩阵或者数组的共轭操作。
【例3.17】矩阵和数组转置运算。
在命令窗口输入以下内容,生成矩阵AA和矩阵A1:>> AA=magic(3); %生成3阶的魔方阵
>> A1=eye(3); %生成3阶的单位对角阵
由A和A1组成复数矩阵,在命令窗口输入:>> x3=AA+A1*i % 由AA和A1组成复数矩阵
生成以下复数矩阵x3:x3 =<br/>8.0000 + 1.0000i 1.0000 6.0000<br/>3.0000 5.0000 + 1.0000i 7.0000<br/>4.0000 9.0000 2.0000 + 1.0000i
①若矩阵AA进行转置运算,可在命令窗口中输入:>> AA' %对实数矩阵进行转置运算
矩阵AA转置后如下:ans =<br/>8 3 4<br/>1 5 9<br/>6 7 2
②若对复数矩阵x3进行转置运算,可在命令窗口中输入:>> x3' % 对复数矩阵进行转置运算
转置后的复数矩阵如下:ans =<br/>8.0000 - 1.0000i 3.0000 4.0000<br/>1.0000 5.0000 - 1.0000i 9.0000<br/>6.0000 7.0000 2.0000 - 1.0000i
③若对复数矩阵x3进行数组转置运算,可在命令窗口中输入:>> x3.' % 对复数矩阵进行数组转置运算
进行转置运算后如下:ans =<br/>8.0000 + 1.0000i 3.0000 4.0000<br/>1.0000 5.0000 + 1.0000i 9.0000<br/>6.0000 7.0000 2.0000 + 1.0000i
###3.1.7 矩阵和数组的数学函数
MATLAB基本数学函数库中还有很多基本的数学函数运算可以对矩阵或数组进行计算,各函数的调用格式和功能描述详见表3.2。
表3.2 基本函数
函数名 | 含义 | 函数名 | 含义 |
---|---|---|---|
abs | 绝对值或者复数模 | Rat | 有理数近似 |
sqrt | 平方根 | Mod | 模除求余 |
real | 实部 | Round | 4舍5入到整数 |
imag | 虚部 | Fix | 向最接近0取整 |
conj | 复数共轭 | Floor | 向最接近-∞取整 |
sin | 正弦 | Ceil | 向最接近+∞取整 |
cos | 余弦 | Sign | 符号函数 |
tan | 正切 | Rem | 求余数留数 |
asin | 反正弦 | Exp | 自然指数 |
acos | 反余弦 | Log | 自然对数 |
atan | 反正切 | log10 | 以10为底的对数 |
atan2 | 第四象限反正切 | pow2 | 2的幂 |
sinh | 双曲正弦 | Bessel | 贝赛尔函数 |
cosh | 双曲余弦 | Gamma | 伽吗函数 |
tanh | 双曲正切 |
【例3.18】数组算术运算函数的使用。
首先在MATLAB工作空间创建以下的数组B:>> 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]
读者可以在MATLAB命令行窗口中输入以下命令,不同数组算术运算函数的运算结果:>> y1=sin(B) %求取数组的正弦
>> y2=sqrt(y1) %求取数组的方根
>> y3=imag(y2) %求取数组的虚部
【例3.19】接上例,将数组y1进行圆整操作。
在MATLAB命令行窗口中输入以下命令,对数组B的正弦函数计算结果进行不同的圆整操作:>> B1=floor(y1) % 向最接近-∞取整
>> B2=ceil(y1) % 向最接近+∞取整
>> B3=round(y1) % 4舍5入到整数
>> B4=fix(y1) % 向最接近0取整
作者:德特数据
联系方式:156204968@qq.com