MATLAB編程與應用系列-第3章 矩陣運算(2)
本系列教程來源於出版設計《基於MATLAB編程基礎與典型應用書籍》,如涉及版權問題,請聯系:[email protected]。 出版社:人民郵電出版社, 頁數:525。
本系列教程目前基於MATLABR2006a,可能對於更高級版本的功能和函數有差異,教程中如有問題,請聯系:[email protected]
###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取整
作者:德特數據
聯系方式:[email protected]
MATLAB編程與應用系列-第3章 矩陣運算(2)