- MATLAB 2020 從入門到精通
- 黃少羅 閆聰聰編著
- 3616字
- 2021-08-12 17:18:24
2.5 矩陣
MATLAB為Matrix Laboratory(矩陣實驗室)的縮寫,可見該軟件在處理矩陣問題上的優勢。
按照空間結構分類,矩陣可分為一維矩陣、二維矩陣、三維矩陣,向量可以看成是一維矩陣,因此,向量中的點積、叉集運算在矩陣中也適用,本節不再贅述。
2.5.1 矩陣的生成
矩陣的生成主要有直接輸入法、M文件生成法和文本文件生成法等。
1.直接輸入法
在鍵盤上直接按行方式輸入矩陣是最方便、最常用的創建數值矩陣的方法,尤其適合較小的簡單矩陣。在用此方法創建矩陣時,應當注意以下幾點。
◆輸入矩陣時要以“[]”為其標識符號,矩陣的所有元素必須都在括號內。
◆矩陣同行元素之間由空格(個數不限)或逗號分隔,行與行之間用分號或<Enter>鍵分隔。
◆矩陣大小不需要預先定義。
◆矩陣元素可以是運算表達式。
◆若“[]”中無元素,表示空矩陣。
◆如果不想顯示中間結果,可以用“;”結束。
例2-23:創建矩陣示例。
解:MATLAB程序如下。


在輸入矩陣時,MATLAB允許方括號里還有方括號,結果跟不加方括號是一樣的。
2.利用M文件創建
當矩陣的規模比較大時,直接輸入法就顯得笨拙,出差錯也不易修改。為了解決這些問題,可以將所要輸入的矩陣按格式先寫入一文本文件中,并以m作為此文件的擴展名,即M文件。
M文件是一種可以在MATLAB環境下運行的文本文件,它可以分為命令式文件和函數式文件兩種。在此處主要用到的是命令式M文件,用它的簡單形式來創建大型矩陣。在MATLAB命令窗中輸入M文件名,所要輸入的大型矩陣即可被輸入到內存中。
M文件中的變量名與文件名不能相同,否則會造成變量名和函數名的混亂。
例2-24:編制M文件,包含表2-20中20位25~34周歲的健康女性的測量數據。

表2-20 測量數據

解:在M文件編輯器中輸入以下內容。


以文件名“healthy_women.m”保存,然后在MATLAB命令窗口中輸入文件名,得到下面的結果。

3.利用文本創建
MATLAB中的矩陣還可以由文本文件創建,即在文件夾(通常為work文件夾)中建立txt文件,在命令窗口中直接調用此文件名即可。
例2-25:用文本文件創建矩陣x,其中
x=1 2 3
4 5 6
7 8 10
解:在記事本中建立以下文件,并以wenben.txt保存。
1 2 3
4 5 6
7 8 10
在MATLAB命令窗口中輸入以下內容。


2.5.2 特殊矩陣
在工程計算以及理論分析中,經常會遇到一些特殊的矩陣,比如全0矩陣、全1矩陣單位矩陣、隨機矩陣等。對于這些矩陣,在MATLAB中都有相應的命令可以直接生成。
1.全0矩陣
在MATLAB中,全零矩陣使用zeros命令表示,該命令的調用格式見表2-21。
表2-21 zeros調用格式

例2-26:全0矩陣生成示例。
解:在MATLAB命令窗口中輸入以下命令。


2.全1矩陣
在MATLAB中,全1矩陣使用ones命令表示,該命令的調用格式見表2-22。
表2-22 ones調用格式

例2-27:全1矩陣生成示例。
解:在MATLAB命令窗口中輸入以下命令。


3.單位矩陣
若λ1=λ2=…=λn=1,即

將該矩陣稱為單位矩陣。
如果A為m×n矩陣,那么EmA=AEn=A。在MATLAB中,單位矩陣使用eye命令表示,該命令的調用格式見表2-23。
表2-23 eye調用格式

4.魔方矩陣
在MATLAB中,magic函數用來生成零矩陣,該命令的調用格式見表2-24。
表2-24 magic調用格式

例2-28:魔方矩陣示例。
解:在MATLAB命令窗口中輸入以下命令。


5.希爾伯特矩陣
在MATLAB中,hilb函數用來生成希爾伯特(Hilbert)矩陣,逆希爾伯特矩陣的函數為invhilb,其調用方法見表2-25。
表2-25 hilb調用格式

在MATLAB中,invhilb函數用來生成逆希爾伯特矩陣,其調用方法見表2-26。
表2-26 invhilb調用格式

例2-29:創建希爾伯特矩陣。
解:在MATLAB命令窗口中輸入以下命令。


6.測試矩陣
在MATLAB中,利用gallery生成測試矩陣,它的使用格式見表2-27。
表2-27 gallery命令的使用格式

表2-28 matrixname的名稱

(續)

(續)

例2-30:生成對稱矩陣。
解:在MATLAB命令窗口中輸入以下命令。


例2-31:生成豪斯霍爾德矩陣。
解:在MATLAB命令窗口中輸入以下命令。


7.隨機矩陣
rand函數、randi函數和randn函數使用隨機數生成器生成隨機矩陣,具體的調用格式見表2-29。
在MATLAB中rng函數控制隨機數生成,具體的調用格式見表2-30。
表2-29 函數調用格式

表2-30 rng函數調用格式

例2-32:檢索和還原生成器設置。
解:在MATLAB命令窗口中輸入以下命令。


2.5.3 矩陣元素函數
矩陣建立起來之后,還需要對其元素進行引用、修改。表2-31列出了矩陣元素的引用格式,表2-32列出了常用的矩陣元素修改命令。
表2-31 矩陣元素的引用格式

表2-32 矩陣元素修改命令

例2-33:矩陣元素的引用。
解:在MATLAB命令窗口中輸入以下命令。


例2-34:擴充矩陣。
解:在MATLAB命令窗口中輸入以下命令。


不但矩陣元素可以引用修改,矩陣的維度和方向也可以進行變換,常用的矩陣變維命令見表2-33。常用的矩陣變向命令見表2-34。
表2-33 矩陣變維命令

表5-34 矩陣變向命令

1.矩陣的旋轉
在MATLAB中,rot90命令用于將數組旋轉90°,該命令的格式與說明見表2-35。
表2-35 rot90命令

例2-35:旋轉矩陣示例。
解:在MATLAB命令窗口中輸入以下命令。


2.矩陣的鏡像
在MATLAB中,flip命令用于鏡像矩陣,翻轉矩陣元素,該命令的格式與說明見表2-36。
表2-36 flip命令

數組的鏡像變換實質是翻轉矩陣元素的操作,分為兩種:左右翻轉與上下翻轉。
◆flip(A,1)將翻轉每一列中的元素
◆flip(A,2)將翻轉每一行中的元素。
例2-36:數組上下翻轉示例。
解:在MATLAB命令窗口中輸入以下命令。


在MATLAB中,還包括專門的左右翻轉與上下翻轉命令,下面分別進行介紹。
(1)左右翻轉
使用fliplr函數將矩陣中的元素左右翻轉,調用方法如下。

例2-37:矩陣左右翻轉示例。
解:在MATLAB命令窗口中輸入以下命令。


(2)上下翻轉
使用flipud函數將矩陣中的元素上下翻轉,調用方法如下。


例2-38:矩陣左右翻轉示例。
解:在MATLAB命令窗口中輸入以下命令。

例2-39:矩陣的變維示例。
解:在MATLAB命令窗口中輸入以下命令。



例2-40:矩陣串聯與變向示例。
解:在MATLAB命令窗口中輸入以下命令。


3.矩陣帶寬
矩陣帶寬是顯示器視頻放大器通頻帶寬度的簡稱,凡電子電路都存在一個固有的通頻帶。帶寬越寬,響應速度就越快,允許通過的信號頻率就越高,信號失真也越小。
矩陣的上帶寬和下帶寬是通過求包含非零值的最遠一個對角線(分別在主對角線上方或下方)測得的。
對于包含元素Aij的矩陣A:
●上帶寬B1是最小數,這樣無論何時j-i>B1,Aij=0。
●下帶寬B2是最小數,這樣無論何時i-j<B2,Aij=0。
在MATLAB中,bandwidth命令用于得到矩陣的上下帶寬,該命令的格式與說明見表2-37。

表2-37 bandwidth命令

在MATLAB中,isbanded命令用于矩陣是否位于特定的下帶寬和上帶寬范圍內,該命令的格式與說明見表2-38。
表2-38 isbanded命令

例2-41:矩陣帶寬示例。
解:MATLAB程序如下。

2.5.4 對角矩陣
對矩陣元素的修改的特例包括對角元素和上(下)三角陣的抽取。在MATLAB中包括專用的命令。
1.對角矩陣
n階矩陣顯示格式為

則稱該矩陣為對角矩陣。兩個對角矩陣的和是對角矩陣,兩個對角矩陣的積也是對角矩陣。
對于矩陣A∈Cn×n,所謂的矩陣對角化就是找一個非奇異矩陣P,使得

其中,λ1,…,λn為A的n個特征值。
矩陣對角化在實際中可以大大簡化矩陣的各種運算,但不是每個矩陣均可進行對角化轉換,因此判斷矩陣是否可以進行對角化轉換是首要步驟。
◆定理1:n階矩陣A可對角化的充要條件是A有n個線性無關的特征向量。
◆定理2:矩陣A可對角化的充要條件是A的每一個特征值的幾何重復度等于代數重復度。
◆定理3:實對稱矩陣A總可以對角化,且存在正交矩陣P,使得

其中,λ1,…,λn為A的n個特征值。
對于矩陣,斜對角上的元素是主對角線元素,如圖2-5所示,包括a11,a22,…,amn。

圖2-5 主對角元素
在MATLAB中,diag命令用于抽取矩陣的對角線上的元素,組成對角線數組,該命令的格式與說明見表2-39。
表2-39 diag命令

在MATLAB中,isdiag命令用于確定矩陣是否為對角矩陣,該命令的格式與說明見表2-40。
表2-40 isdiag命令

例2-42:矩陣對角線抽取示例。
解:MATLAB程序如下。


2.上對角矩陣
在MATLAB中,triu命令用于抽取矩陣的對角線上三角部分的元素,下三角元素使用0替代,組成上對角線矩陣,如圖2-6所示,該命令的格式與說明見表2-41。

圖2-6 上三角矩陣轉換
表2-41 triu命令

例2-43:上對角矩陣示例。
解:MATLAB程序如下。


在MATLAB中,istriu命令用于確定矩陣是否為上三角矩陣,該命令的格式與說明見表2-42。
表2-42 istriu命令

例2-44:上三角矩陣示例。
解:MATLAB程序如下。


3.下對角矩陣
在MATLAB中,tril命令用于抽取矩陣的對角線下三角部分的元素,其余部分用0替代,組成下三角矩陣,如圖2-7所示,該命令的格式與說明見表2-43。

圖2-7 下三角矩陣轉換
表2-43 tril命令

在MATLAB中,istril命令用于確定矩陣是否為下三角矩陣,該命令的格式與說明見表2-44。
表2-44 istril命令

例2-45:下三角矩陣示例。
解:MATLAB程序如下。



2.5.5 矩陣基本運算
矩陣的基本運算包括加、減、乘、數乘、點乘、乘方、左乘、右乘、求逆等。其中加、減、乘與大家所學的線性代數中的定義是一樣的,相應的運算符為“+”“-”“?”,而矩陣的除法運算是MATLAB所特有的,分為左除和右除,相應運算符為“\”和“/”。
MATLAB的除法運算較為特殊。對于簡單數值而言,算術左除與算術右除不同。算術右除與傳統的除法相同,即a/b=a÷b;而算術左除則與傳統的除法相反,即a\b=b÷a。
對矩陣而言,算術右除B/A相當于求解線性方程X?A=B的解;算術左除A\B相當于求解線性方程A?X=B的解。點左除與點右除與上面點運算相似,是變量對應于元素進行點除。
例2-46:矩陣的基本運算示例。
解:MATLAB程序如下。



MATLAB以矩陣為基本運算單元,而構成矩陣的基本單元是數據。為了更好地學習和掌握矩陣的運算,本章首先對數據的基本函數作簡單介紹。
另外,常用的運算還有指數函數、對數函數、平方根函數等。用戶可查看相應的幫助獲得使用方法和相關信息。
- Python for Secret Agents:Volume II
- Python高級編程
- 深入淺出Windows API程序設計:編程基礎篇
- ASP.NET 3.5程序設計與項目實踐
- 微信小程序入門指南
- Scala編程實戰(原書第2版)
- Haxe Game Development Essentials
- Extending Puppet(Second Edition)
- Learning Grunt
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)
- 軟硬件綜合系統軟件需求建模及可靠性綜合試驗、分析、評價技術
- Python程序員面試算法寶典
- Learning ArcGIS Geodatabases
- C++程序設計基礎(下)
- Objective-C入門教程