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之解說

1 則留言:

匿名 提到...

a=[15625 3125 625 125 25 5;1000000 100000 10000 1000 100 10;11390625 759375 50625 3375 225 15;1280000000 64000000 3200000 8000 400 20;2490234375 99609375 3984375 159375 6375 25;729000000 24300000 810000 27000 900 30]

a =

1.0e+009 *

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0010 0.0001 0.0000 0.0000 0.0000 0.0000
0.0114 0.0008 0.0001 0.0000 0.0000 0.0000
1.2800 0.0640 0.0032 0.0000 0.0000 0.0000
2.4902 0.0996 0.0040 0.0002 0.0000 0.0000
0.7290 0.0243 0.0008 0.0000 0.0000 0.0000

》b=[0.72;1.54;2.46;3.47;4.58;5.78]

b =

0.7200
1.5400
2.4600
3.4700
4.5800
5.7800

》x=inv(x)*b
??? Undefined function or variable "x".

》x=inv(a)*b

x =

0.0000
-0.0000
0.0000
0.0001
-0.0019
0.1474


請問一下 我用a=[5^6~5^1 10^6~10^1 15^6~15^1 20^6~20^1 25^6~25^1 30^6~30^1]~排成矩陣 再用b=[0.72 1.54 2.46 3.47 4.58 5.78] 再用x=inv(a)*b
算出來的值如下
0.0000
-0.0000
0.0000
0.0001
-0.0019
0.1474
算出來的值不太對 請問可以幫我解答一下嗎 拜託拜託 謝謝
我的信箱 h96322221454@yahoo.com.tw

張貼留言