MATLAB2016笔记(五):进阶矩阵操作
文章目錄
- 一、特殊矩陣創(chuàng)建
- (一)希爾伯特矩陣 hilb()
- (二)托普利茲矩陣 toeplitz()
- (三)0~1間均勻分布的隨機(jī)矩陣 rand()
- (四)標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣 randn()
- (五)魔方矩陣 magic()
- (六)帕斯卡矩陣 pascal()
- (七)范德蒙矩陣 vander()
- 二、改變矩陣大小
- (一)矩陣合并
- (二)矩陣行列刪除
- 三、矩陣重構(gòu)
- (一)位置轉(zhuǎn)置 A.′A_{.}^{'}A.′?
- (二)共軛轉(zhuǎn)置 A′A^{'}A′
- 四、矩陣元素運(yùn)算
- (一)矩陣加減
- (二)矩陣乘法
- (三)矩陣除法
- (四)矩陣冪運(yùn)算
- 五、矩陣元素操作
- (一)元素查找 find()
- (二)元素排序 sort()
- (三)元素求和 sum() cumsum()
- (四)元素求積 prod() cumprod()
- (五)元素差分 diff()
- 六、矩陣分析
- (一)向量和矩陣的范數(shù)運(yùn)算(定義、計算)norm()
- (二)矩陣的秩 rank()
- (三)矩陣的行列式 det()
- (四)矩陣的跡 trace()
- (五)矩陣的化零矩陣 null()
- (六)矩陣的正交空間 orth()
- (七)矩陣的約化行階梯形式 rref()
- (八)矩陣空間之間的夾角 subspace()
- 七、矩陣分解
- (一)對稱正定矩陣的Cholesky分解 chol()
- (二)稀疏矩陣的不完全Cholesky分解 cholinc()/ichol()
- (三)一般方陣的高斯消去法分解(LU分解) lu()
- (四)稀疏矩陣的不完全LU分解 luinc()/ilu()
- (五)矩形矩陣的正交分解(QR分解) qr()
- (六)舒爾分解 schur()
- 八、特征值和特征向量 eig()
- (一)定義
- (二)相關(guān)矩陣
- (三)計算
- 九、稀疏矩陣
- (一)概念
- (二)存儲方式
- (三)稀疏矩陣創(chuàng)建 sparse()
- (四)稀疏矩陣的屬性查看
- (五)稀疏矩陣的運(yùn)算(結(jié)果形式的確定)
一、特殊矩陣創(chuàng)建
(一)希爾伯特矩陣 hilb()
希爾伯特(Hilbert)矩陣,也叫HHH陣,其元素為Hij=1i+j?1H_{ij}=\frac{1}{i+j-1}Hij?=i+j?11?
條件數(shù)
由于它是一個條件數(shù)差的矩陣,所以可以將它用作實驗矩陣關(guān)于希爾伯特矩陣的指令函數(shù)如下:1. hilb(n) 用于生成一個n*n的希爾伯特矩陣2. invhilb(n) 用于生成一個n*n的希爾伯特矩陣的逆矩陣(整數(shù)矩陣)(二)托普利茲矩陣 toeplitz()
托普利茲(Toeplitz)矩陣,它的主對角線上的元素相等,平行于主對角線的線上的元素也相等;矩陣中的各元素關(guān)于次對角線對稱
關(guān)于托普利茲矩陣的指令函數(shù)如下: 1.toeplitz(k,r) 用于生成非對稱托普利茲矩陣,k為第一列,r為第一行,k與r為長度不一定相等的向量所得矩陣中其余的元素等于各自左上角元素注意行列向量的首位元素要相同 2.toeplitz(c) 用于用向量c生成一對稱的托普利茲矩陣(三)0~1間均勻分布的隨機(jī)矩陣 rand()
通過rand()函數(shù)產(chǎn)生0~1間均勻分布的隨機(jī)矩陣
(四)標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣 randn()
通過randn()函數(shù)產(chǎn)生均值為0、方差為1的隨機(jī)矩陣
調(diào)用方法與rand()類似(五)魔方矩陣 magic()
魔方矩陣中每行、每列和兩條對角線上的元素和相等,調(diào)用形式如下:
M=magic(n)(六)帕斯卡矩陣 pascal()
帕斯卡矩陣,由楊輝三角形表組成,除首行首列外,每個元素為左側(cè)元素與上側(cè)元素之和
其調(diào)用形式如下:
(七)范德蒙矩陣 vander()
范德蒙矩陣的第iii行jjj列表示為aij?1a_i^{j-1}aij?1?
A=[1a12...a1n?11a22...a2n?1???1am2...amn?1]A=\left[ \begin{matrix} 1 & a_{1}^2 & ...&a_{1}^{n-1} \\ 1 & a_{2}^2 & ...&a_{2}^{n-1} \\ \vdots & \vdots & & \vdots\\ 1 & a_{m}^2 & ...&a_{m}^{n-1} \\ \end{matrix} \right] A=???11?1?a12?a22??am2??.........?a1n?1?a2n?1??amn?1?????
其調(diào)用形式如下:
A=vander(v) v是向量,矩陣的列是向量v的冪,矩陣列數(shù)等于v的長度二、改變矩陣大小
(一)矩陣合并
矩陣合并就是把兩個或者兩個以上的矩陣數(shù)據(jù)連接起來得到一個新的矩陣 使用“ [] ”實現(xiàn)水平方向合并與豎直方向合并 需要注意的是要保證合并前后矩陣為方形,否則矩陣合并無法進(jìn)行(二)矩陣行列刪除
要刪除矩陣的某一行或某一列,只要把該行或該列賦予一個空矩陣即可
三、矩陣重構(gòu)
(一)位置轉(zhuǎn)置 A.′A_{.}^{'}A.′?
只對位置進(jìn)行改變,即便元素是復(fù)數(shù)也不受影響(二)共軛轉(zhuǎn)置 A′A^{'}A′
對于實數(shù)矩陣,共軛轉(zhuǎn)置的結(jié)果不變 對于復(fù)數(shù)矩陣,共軛轉(zhuǎn)置后不僅位置變化,元素也是共軛的四、矩陣元素運(yùn)算
(一)矩陣加減
矩陣之間必須具有相同的維數(shù) 標(biāo)量則作用于對應(yīng)矩陣的所有元素(二)矩陣乘法
矩陣間乘法滿足被乘矩陣的列數(shù)與乘矩陣的行數(shù)相等,不遵循交換律 標(biāo)量則作用于對應(yīng)矩陣的所有元素(三)矩陣除法
矩陣除法是乘法的逆運(yùn)算,分為左除(\)和右除(/)兩種
數(shù)組間乘除要求維數(shù)相同
右除(/)為一般意義的除法,與左除關(guān)系如下:
對于一般的二維矩陣AAA和BBB:
當(dāng)進(jìn)行A\B運(yùn)算時,要求A的行數(shù)與B的行數(shù)相等當(dāng)進(jìn)行A/B運(yùn)算時,要求A的列數(shù)和B的列數(shù)相等(四)矩陣冪運(yùn)算
當(dāng)矩陣AAA為方陣時,可以進(jìn)行矩陣的冪運(yùn)算,其定義為:C=An=A×A×...×A?nC=A^{n}=\underbrace{A \times A \times ... \times A}_nC=An=nA×A×...×A??
在MATLABMATLABMATLAB中,使用運(yùn)算符號“ ^ ”表示冪運(yùn)算
五、矩陣元素操作
(一)元素查找 find()
函數(shù)find()的作用是進(jìn)行矩陣元素的查找,它通常與關(guān)系函數(shù)和邏輯運(yùn)算相結(jié)合其語法格式如下: ind = find(X) 查找矩陣X中的非零元素,函數(shù)返回這些元素的單下標(biāo) [row,col] = find(X,...) 查找矩陣X中的非零元素,函數(shù)返回這些元素的雙下標(biāo)可在圓括號內(nèi)添加限定條件(二)元素排序 sort()
函數(shù)sort()的作用是按照升序排列,排序后的矩陣和原矩陣的維數(shù)相同其語法格式如下: sort(A,dim) dim默認(rèn)為1,僅對列進(jìn)行排序;dim為2時,對行進(jìn)行排序sort(...,mode) mode可以指定排序的方式,默認(rèn)為ascend升序;descend,指定降序排列(三)元素求和 sum() cumsum()
函數(shù)sum()和cumsum()的作用是對矩陣的元素求和其語法格式如下:sum(A,dim) 返回由和所組成的向量,dim默認(rèn)為1,計算矩陣A各列元素的和;dim=2時,計算矩陣A各行元素的和cumsum(A,dim) 返回一個前綴和矩陣,dim默認(rèn)為1,計算矩陣A各列元素的和;dim=2時,計算矩陣A各行元素的和通過sum(sum(A))就可以求出A中所有矩陣元素之和(四)元素求積 prod() cumprod()
函數(shù)prod()和cumprod()的作用是對矩陣的元素求積其語法格式如下: prod(A,dim) 返回由積所組成的向量,dim默認(rèn)為1,計算矩陣A各列元素的積;dim=2時,計算矩陣A各行元素的積 cumprod(A,dim) 返回一個前綴積矩陣,dim默認(rèn)為1,計算矩陣A各列元素的積;dim=2時,計算矩陣A各行元素的積同理,同樣可以通過prod(prod(A))求出A中所有矩陣元素之積(五)元素差分 diff()
函數(shù)diff()的作用是計算矩陣的差分其語法格式如下: diff(A,n,dim) X為矩陣,n表示計算結(jié)果是n階差分,默認(rèn)為1;dim默認(rèn)為1,計算各列差分;dim為2,計算各行差分首行或首列沒有差分值,所以所得矩陣會少一行或一列 當(dāng)n>size(X,dim),函數(shù)返回值是空矩陣六、矩陣分析
(一)向量和矩陣的范數(shù)運(yùn)算(定義、計算)norm()
百度——范數(shù)定義
知乎——范數(shù)作用
知乎——奇異值分解與應(yīng)用
(二)矩陣的秩 rank()
矩陣中線性無關(guān)的列向量個數(shù)稱為列秩,線性無關(guān)的行向量個數(shù)為行秩
方陣(行數(shù)、列數(shù)相等的矩陣)的列秩和行秩總是相等的,因此它們可以簡單地稱作矩陣A的秩
m×n矩陣的秩最大為m和n中的較小者,表示為 min(m,n)。有盡可能大的秩的矩陣被稱為有滿秩;類似的,否則矩陣是秩不足(或稱為“欠秩”)的
(三)矩陣的行列式 det()
百度——矩陣行列式
矩陣A={aij}n×nA=\{a_{ij}\}_{n \times n}A={aij?}n×n?的行列式定義:∣∣A∣∣=det(A)=∑k=1n(?1)ka1k1a2k2...ankn|| A||=det(A)=\sum_{k=1}^{n}(-1)^{k}a_1k_1a_2k_2...a_nk_n∣∣A∣∣=det(A)=∑k=1n?(?1)ka1?k1?a2?k2?...an?kn?
其中,k1,k2,...,knk_1,k_2,...,k_nk1?,k2?,...,kn?是將序列1,2,...,n1,2,...,n1,2,...,n交換kkk次所得的序列
一個n×n矩陣的行列式等于其任意行(或列)的元素與對應(yīng)的代數(shù)余子式乘積之和,即 det(A)=ai1Ai1+...+ainAin=∑j=1naij(?1)i+jMijdet(A)=a_{i1}A_{i1}+...+a_{in}A_{in}=\sum_{j=1}^{n}a_{ij}(-1)^{i+j}M_{ij}det(A)=ai1?Ai1?+...+ain?Ain?=∑j=1n?aij?(?1)i+jMij?
函數(shù)det()用于計算矩陣的行列式(四)矩陣的跡 trace()
在線性代數(shù)中,一個n×n矩陣A的主對角線(從左上方至右下方的對角線)上各個元素的總和被稱為矩陣A的跡(或跡數(shù)),一般記作tr(A)
函數(shù)trace()用于計算矩陣的跡(五)矩陣的化零矩陣 null()
對于非滿秩矩陣AAA,若存在矩陣BBB使A×B=0A\times B=0A×B=0,且B×B=IB\times B=IB×B=I,即不等于000,則稱矩陣BBB為矩陣AAA的化零矩陣
函數(shù)null()可以用于求解化零矩陣,其用法格式如下: null(A) 返回矩陣A的一個化零矩陣,若化零矩陣不存在則返回空矩陣 null(A,'r') 返回有理數(shù)形式的化零矩陣(六)矩陣的正交空間 orth()
矩陣AAA的正交空間QQQ具有Q′×Q=IQ^{'} \times Q=IQ′×Q=I的性質(zhì),并且QQQ的列矢量構(gòu)成的線性空間與矩陣AAA的列矢量構(gòu)成的線性空間相同,且正交空間QQQ與矩陣AAA具有相同的秩
函數(shù)otrh()可以用于求解正交空間(七)矩陣的約化行階梯形式 rref()
矩陣的約化行列階梯形式是高斯-約旦消去法解線性方程組的結(jié)果
函數(shù)rref()可以用于求矩陣的約化行階梯形式,其用法如下: R = rref(A) 返回A的約化行階梯形式R [R,jb] = rref(A) jb為1*r的向量,r為矩陣A的秩A(:,jb)是矩陣A的列矢量構(gòu)成的線性空間;R(1:r,jb)是r*r的單位矩陣 [R,jb] = rref(A,tol) 以tol作為允許的相對誤差計算矩陣A的秩(八)矩陣空間之間的夾角 subspace()
矩陣空間之間的夾角代表兩個矩陣線性相關(guān)的程度,如果夾角很小,它們之間的線性相關(guān)度就很高,反之,它們之間的線性相關(guān)度就不大
函數(shù)subspace()可以求出矩陣空間之間的夾角,其用法如下: theta = subspace(A,B) 返回矩陣A和矩陣B之間的夾角七、矩陣分解
矩陣分解是把一個矩陣分解為幾個“較簡單”的矩陣連乘的形式
知乎——矩陣分解
百度——矩陣分解
(一)對稱正定矩陣的Cholesky分解 chol()
函數(shù)chol()可以實現(xiàn)Cholesky分解,其常用調(diào)用方法如下: R = chol(X) X為對稱正定矩陣,R為上三角矩陣,使得X=R'*R,如果X是非正定的,將報錯[R,p] = chol(X) 當(dāng)X為正定矩陣,返回的上三角矩陣R滿足X=R'*R,且p=0;若X是非正定矩陣,R階數(shù)為p-1,且滿足X(1:p-1,1:p-1)=R'*R
(二)稀疏矩陣的不完全Cholesky分解 cholinc()/ichol()
函數(shù)cholinc()用于對稀疏矩陣進(jìn)行不完全的Cholesky分解,還可以用于計算實半正定矩陣,其調(diào)用格式如下: R = cholinc(X,DROPTOL) 其中X與R的含義與chol()中相同,DROPTOL為不完全Cholesky分解的丟失容限當(dāng)DROPTOL為'0',該函數(shù)作用就是完全Cholesky分解當(dāng)DROPTOL為'inf',該函數(shù)采用Cholesky-Infinity分解,可以處理實半正定矩陣R = cholinc(X,OPTS) 其中OPTS為結(jié)構(gòu)體,含有三個屬性,分別為DROPTOL、MICHOL和RDIAGDROPTOL 與上方含義相同MICHOL 該值為1時采用改進(jìn)算法的不完全Cholesky分解,否則不采用RDIAG 該值為1時R的對角元素中的零值替換為DROPTOL的平方根,為0時不做替換但在2013版后,MATLAB中就沒有cholinc()了,只有ichol()有類似的功能
而參數(shù)opts為結(jié)構(gòu)體
(三)一般方陣的高斯消去法分解(LU分解) lu()
高斯消去法分解又稱為LULULU分解,它可以將任意一個方陣AAA分解為一個下三角矩陣LLL和一個上三角矩陣UUU的乘積,即A=LUA=LUA=LU
函數(shù)lu()可以實現(xiàn)LU分解,其調(diào)用形式如下: [L,U]=lu(X) X為一個方陣,L為下三角矩陣,U為上三角矩陣,滿足:X=L*U[L,U,P]=lu(X) X為一個方陣,L為下三角矩陣,U為上三角矩陣,P為置換矩陣,滿足:P*X=L*UY=lu(X) L與U合并在矩陣Y中,矩陣Y的對角元素為上三角矩陣(U)的對角元素,即Y=L+U-I (//尚未實踐證明)利用LU分解來計算行列式的值和矩陣的逆,其命令形式如下: det(A)=det(L)*det(U) inv(A)=inv(U)*inv(L)
(四)稀疏矩陣的不完全LU分解 luinc()/ilu()
與上方cholinc()原因類似,如今只有ilu()
(五)矩形矩陣的正交分解(QR分解) qr()
QRQRQR分解把一個m×nm \times nm×n的矩陣AAA分解為一個正交矩陣QQQ和一個上三角矩陣RRR的乘積,即A=Q×RA=Q \times RA=Q×R
函數(shù)qr()可以實現(xiàn)QR分解,其調(diào)用方式如下: [Q,R]=qr(A) R為與A具有相同大小的上三角矩陣,Q為正交矩陣,滿足A=Q*R,該調(diào)用方式適合滿矩陣和稀疏矩陣 [Q,R]=qr(A,0) “經(jīng)濟(jì)”的QR分解,設(shè)A為m*n的矩陣,若m>n,則只計算Q的前n列元素,R為n*n的矩陣;否則,功能與上式一樣R=qr(A) 返回上三角矩陣R,這里 R=chol(A'*A),該調(diào)用方式適合稀疏矩陣 R=qr(A,0) 以上述“經(jīng)濟(jì)”的方式進(jìn)行分解[Q,R,E]=qr(A) E為置換矩陣,滿足A*E=Q*R,程序會選擇一個合適的矩陣E使得abs(diag(R))為降序排列,該方法適合滿矩陣 [Q,R,E]=qr(A,0) 以上述“經(jīng)濟(jì)”的方式進(jìn)行分解,E為置換矢量,滿足A(:,E)=Q*R,該方法適合滿矩陣
(六)舒爾分解 schur()
舒爾分解的定義式為:A=U?S?U′A=U*S*U^{'}A=U?S?U′,其中AAA必須是一個方陣,UUU是一個酉矩陣,SSS是一個塊對角化矩陣,由對角線上的1×11\times11×1和2×22\times22×2塊組成
特征值可以由矩陣SSS的對角塊給出,而矩陣UUU給出比特征向量更多的數(shù)值特征
此外,對缺陷矩陣也可以進(jìn)行舒爾分解
缺陷矩陣:不可對角化矩陣
八、特征值和特征向量 eig()
(一)定義
特征值和特征向量
AAA為nnn階矩陣,λ\lambdaλ為實數(shù),若我們可以找到一個非零向量xxx,使得Ax=λxAx=\lambda xAx=λx,我們就稱λ\lambdaλ為矩陣AAA的特征值,非零向量xxx為矩陣AAA的特征向量
從幾何角度來說,AxAxAx與xxx的方向相同,只是長度不同,而長度相差的就是系數(shù)λ\lambdaλ,
(二)相關(guān)矩陣
(三)計算
九、稀疏矩陣
(一)概念
對于含有大量000元素的稀疏矩陣,MATLABMATLABMATLAB為了節(jié)省空間和計算時間,對稀疏矩陣運(yùn)算有特殊的命令
(1)節(jié)省空間
如果MATLABMATLABMATLAB把一個矩陣當(dāng)作稀疏矩陣,若有mmm個非零項,則可以通過一個m×3m\times3m×3的矩陣來存儲,第一列為行下標(biāo),第二列為列下標(biāo),第三列為非零元素值
(2)節(jié)省時間
之前所說的算術(shù)和邏輯運(yùn)算都適用于稀疏矩陣,相對于普通矩陣,稀疏矩陣的計算速度更快,因為MATLAB只需對非零元素進(jìn)行操作
(二)存儲方式
對于稀疏矩陣,MATLABMATLABMATLAB僅存儲矩陣所有的非零元素的值及其位置,一個矩陣越“稀疏”,其節(jié)省空間的效果就越明顯
(三)稀疏矩陣創(chuàng)建 sparse()
(四)稀疏矩陣的屬性查看
nns(A) 查看稀疏矩陣中非零元素個數(shù) nonzeros(A) 查看稀疏矩陣中非零元素的值,返回一個向量 nzmax(A) 查看稀疏矩陣的存儲空間 nnz(A)/prod(size(A)) 可以計算稀疏矩陣的非零元素密度spy(A) 對稀疏矩陣中的非零元素的分布進(jìn)行圖形化顯示(五)稀疏矩陣的運(yùn)算(結(jié)果形式的確定)
對于矩陣的加減乘除運(yùn)算,只要其中有一個是滿矩陣,輸出結(jié)果就是滿矩陣 稀疏矩陣的數(shù)乘為稀疏矩陣,稀疏矩陣的冪為稀疏矩陣總結(jié)
以上是生活随笔為你收集整理的MATLAB2016笔记(五):进阶矩阵操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何画业务流程图?
- 下一篇: html5 replace,js rep