9/27/2006

2.6 特殊矩陣

輸入特定矩陣,有時比較煩瑣,其輸入問題與前述之向量相同。由鍵盤輸入是一般性的作法,但數量一多,就需耗費甚大的功夫。有些資料可來自其他資料檔,或excel之檔案內容,或特殊函數執行後之結果。由資料檔輸出入將另章作討論,而特函矩陣例如,magic(N):


>>M=magic(3)

M =
8 1 6
3 5 7
4 9 2

這個特殊函數會產生以括號內之參數值為維度之方矩陣,其元素為由1至N^2(此例中N=3)之連續正整數,其各行各列及對角線元素之和均相等。在應用時,常以此函數為例,立即製作一個方矩陣,其大小為NxN。

隨機函數rand也是一個常用的函數,它可以利用亂數產生矩陣,其值介於0與1之間,要使用時可以自行乘以所需之倍數。

>>R=rand(3,4)*10
R =
0.1527 9.3181 8.4622 6.7214
7.4679 4.6599 5.2515 8.3812
4.4510 4.1865 2.0265 0.1964

要創造一個矩陣全為零或全為零的元素,在MATLAB中也有辦法,不必利用鍵盤輸入。其函數有zeros(N1,N2)、ones(N1,N2)及eye(N1,N2)等,執行後會產生一個N1xN2的矩陣,其內含元素均為0或均為1(zeros);後者則是其對角元素為1,其餘元素為0。參數中N1, N2分別為其列與行的維數,若僅輸入一項,則其結果為方矩陣。下面為幾個應用的例子:

>>I=ones(2,5)
I =
1 1 1 1 1
1 1 1 1 1

>>O=zeros(3)
O =
0 0 0
0 0 0
0 0 0

>>U=eye(5)
U =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

上述函數可以在設定初值或預設矩陣大小時使用。

對角線矩陣函數(diag)之功能則可由下列例子加以說明。若A為方矩陣,則diag(A)會產生一個行向量包括A對角項目。若某一向量 x 則 diag(x) 後會產生以此向量之項目為對角線項目而其餘為零之方矩陣,下面為x為ans之例子:

>>A = [1 2 3;4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9

>>D=diag(A)
D =
1
5
9

>>diag(D) %put elements in D as the diagonal elements in a square matrix
ans =
1 0 0
0 5 0
0 0 9

表4.4特殊矩陣一覽表
  特殊函數  說明

  • eye(n) 特性矩陣(identity matrix),產生一個nxn單位方矩陣。
  • zeros(n1,n2) 值零n1xn2矩陣,元素值為零
  • ones(n1,n2) 值一n1xn2矩陣,元素值為一
  • diag 對角線矩陣(diagonal matrix),僅對角線項有值。
  • triu 上三角矩陣
  • tril  下三角矩陣
  • rand 隨機矩陣
  • hilb 希伯特矩陣
  • magic(n) 魔術方塊nxn矩陣
  • toeplitz 參見help toeplitz之解說