MATLAB矩陣處理—特殊矩陣


需要掌握

  1. MATLAB語言中特殊矩陣
  2. MATLAB語言中矩陣的變幻
  3. MATLAB語言矩陣如何求值
  4. MATLAB語言中特征值與特征向量
  5. MATLAB語言中稀疏矩陣

2.1  特殊矩陣

如何建立矩陣?

逐個按行的順序,輸入矩陣的各個元素,全部元素用中括號括起來,同一行的元素用,或者空格分隔,不同行的元素之間用分號(;)分隔。

l  通用性的特殊矩陣——0矩陣,1矩陣,單位矩陣等等

l  用於專門學科的特殊矩陣——范德蒙矩陣,魔方矩陣等等

1.通用的特殊矩陣

 zeros函數:產生全0矩陣,即零矩陣。

 ones函數:產生全1矩陣,即幺矩陣。

 eye函數:產生對角線為1的矩陣。當矩陣是方陣時,得到一個單位矩陣。

 rand函數:產生(0,1)區間均勻分布的隨機矩陣。

 randn函數:產生均值為0,方差為1的標准正態分布隨機矩陣。

zeros函數的調用格式: 

zeros(m):產生m×m零矩陣。 

zeros(m,n):產生m×n零矩陣。

zeros(size(A)):產生與矩陣A同樣大小的零矩陣。   Size返回A的行數和列數

>> A=zeros(2,3)

A = 0     0     0

  0     0     0

>> zeros(size(reshape(A,3,2)))   // reshape將A轉變為三行兩列的矩陣,size得到向量3和2

ans = 0     0

  0     0

   0     0

例1  產生5階兩位隨機整數(10-99)矩陣A,再產生均值為0.6、方差為0.1的5階正態分布隨機矩陣B,驗證(A+B)I=IA+BI(I為單位矩陣)。

rand函數:產生(0,1)開區間均勻分布的隨機數x。

fix(a+(b-a+1)*x):產生[a,b]區間上均勻分布的隨機整數。

randn函數:產生均值為0、方差為1的標准正態分布隨機數x。

μ+σx:得到均值為μ、方差為σ2的隨機數。

>> A=fix(10+(99-10+1)*rand(5));

>> B=0.6+sqrt(0.1)*randn(5);

>> C=eye(5);   //產生五階單位陣

>> (A+B)*C==C*A+B*C

ans =

1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

1     1     1     1     1

 

2.用於專門學科的特殊矩陣

(1)魔方矩陣——Magic Square

 

 

>> M=magic(3)     //和均為15

M = 8     1     6

  3     5     7

  4     9     2

n階魔方陣由1,2,3,…,n2共n2個整數組成,且每行、每列以及主、副對角線上各n個元素之和都相等。

n階魔方陣每行每列元素的和為(1+2+3+…+ n^2)/n=(n+n^3)/2

n>2時有很多不同的n階魔方陣,MATLAB函數magic(n)產生一個特定的魔方陣。

例2  產生8階魔方陣,求其每行每列元素的和。

>> M=magic(8);

>> sum(M(1,:))  //每列

ans =

  260

>> sum(M(:,1))   //每行

ans =

  260

 

(2)范德蒙矩陣

 

 

范德蒙(Vandermonde)矩陣是法國數學家范德蒙提出的一種特殊矩陣。范得蒙矩陣的最后一列全為1,即向量v各元素的零次方,倒數第二列為指定的向量v,即向量v各元素的一次方, 其他各列是其后列與倒數第二列的點乘積。

在MATLAB中,函數vander(V)生成以向量V為基礎的范得蒙矩陣。

>> A=vander(1:5)   //以1.2.3.4.5組成的向量為基礎。

A = 1     1     1     1     1

  16     8     4     2     1

  81    27     9     3     1

  256    64    16     4     1

  625   125    25     5     1

范德蒙矩陣常用在各種通信系統的糾錯編碼中,例如,常用的Reed-Solomon 編碼(里德-所羅門編碼)即以范德蒙矩陣為基礎。

 

(3) 希爾伯特矩陣

n階希爾伯特(Hilbert)矩陣的一般形式為:

 

 

希爾伯特矩陣的元素為H(i,j)=1/(i+j-1)。

在MATLAB中,生成n階希爾伯特矩陣的函數是hilb(n)。

>> format rat   //設置輸出為有理數輸出

>> H=hilb(4)

H = 1              1/2            1/3            1/4    

  1/2            1/3            1/4            1/5    

  1/3            1/4            1/5            1/6    

  1/4            1/5            1/6            1/7

希爾伯特矩陣是著名的病態矩陣,即任何一個元素發生較小的變動,整個矩 陣的值和逆矩陣都會發生很大變化。病態程度和矩陣的階數相關,隨着階數的增加病態越嚴重。

 

(4)托普利茲矩陣、

托普利茲(Toeplitz)矩陣除第一行第一列外,其他元素都與左上角的元素相等,即T(i,j)=T(i-1,i-1)。

toeplitz(x,y): 生成以x為第一列, y為第一行的托普利茲矩陣。

toeplitz(x): 用向量x生成一個對稱的托普利茲矩陣。  //x和y均為向量,長度不必相等。

 

 

 

(5)伴隨矩陣

設多項式p(x)為anxn+an-1xn-1+…+a1x+a0,則多項式的伴隨矩陣是:

 

 

p(x)稱為A的特征多項式,方程p(x)=0的根稱為A的特征值。第一行由系數組成

MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在后。例如,生成多項式x3-2x2-5x+6的伴隨矩陣。

>> p=[1,-2,-5,6]; 

>> A=compan(p)

A =  2     5    -6 

  1     0     0 

  0     1     0

可以求出伴隨矩陣的特征值,該特征值等於多項式方程的根。

 

(6) 帕斯卡矩陣

根據二項式定理,(x+y)^n展開后的系數隨着n的增大組成一個三角形表,這個三角形稱為楊輝三角形。 每行代表不同n時的二項式系數

 

 

把二項式系數依次填寫在矩陣的左側對角線上,然后提取左側的n行n列元素即為n階帕斯卡(Pascal)矩陣。

 

帕斯卡矩陣的第一行元素和第一列元素都為1,其余位置的元素是該元素的左邊元素與上面元素相加,即P(i,j)=P(i,j-1)+P(i-1,j),且P(i,1)=1,P(1,j)=1。

 

 

 

函數pascal(n)生成一個n階帕斯卡矩陣。

例3  生成5階帕斯卡矩陣,驗證它的逆矩陣的所有元素也為整數。

>> format rat  //有理數輸出格式

>> P=pascal(5)

P =

1              1              1              1              1     

  1              2              3              4              5     

  1              3              6             10             15    

  1              4             10             20             35    

1              5             15             35             70    

>> inv(P)  //求逆矩陣

ans =

5            -10             10             -5              1      

-10             30            -35             19             -4     

 10            -35             46            -27              6    

 -5             19            -27             17             -4    

 1             -4              6             -4              1

 

 

 

Tip:單位矩陣:它是個方陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0。

A是數域上的一個n階矩陣,若在相同數域上存在另一個n階矩陣B,使得: AB=BA=,則我們稱BA的逆矩陣,而A則被稱為可逆矩陣。注:E為單位矩陣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM