1. 程式人生 > >【MATLAB】幾種特殊矩陣,Hilbert矩陣,Toeplitz矩陣,Vandermonde矩陣......

【MATLAB】幾種特殊矩陣,Hilbert矩陣,Toeplitz矩陣,Vandermonde矩陣......

1、Hadamard矩陣

Hadamard矩陣是由+1和-1元素構成的且滿足Hn*Hn’=nI(這裡Hn’為Hn的轉置,I為單位方陣)n階方陣。

>> hadamard(4)

ans =

     1     1     1     1
     1    -1     1    -1
     1     1    -1    -1
     1    -1    -1     1

2、Hankel矩陣:是指每一條副對角線上的元素都相等的方陣。

>> x=[1 2 3 4 5 6 7]

x =

     1     2     3     4     5     6     7

>> hankel(x)

ans =

     1     2     3     4     5     6     7
     2     3     4     5     6     7     0
     3     4     5     6     7     0     0
     4     5     6     7     0     0     0
     5     6     7     0     0     0     0
     6     7     0     0     0     0     0
     7     0     0     0     0     0     0

hankel(x,y):

返回一個m x n的Hankel矩陣,它的第一列向量為x,最後一行為向量y

>> x=[1 2 3 4 5 6 7]

x =

     1     2     3     4     5     6     7

>> y=[7 6 5 4 3 2 2]

y =

     7     6     5     4     3     2     2

>> hankel(x,y)

ans =

     1     2     3     4     5     6     7
     2     3     4     5     6     7     6
     3     4     5     6     7     6     5
     4     5     6     7     6     5     4
     5     6     7     6     5     4     3
     6     7     6     5     4     3     2
     7     6     5     4     3     2     2

3、Pascal矩陣:

Pascal矩陣的第一行元素和第一列元素都為1,其餘位置處的元素是該元素的左邊元素加起上一行對應位置相加而得,如元素Ai,j=Ai,j-1+Ai-1,j。Ai,j表示第i行,第j列位置上的元素

>> pascal(4)

ans =

     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20

>> pascal(5)

ans =

     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

4、Rosser矩陣

>> rosser

ans =

   611   196  -192   407    -8   -52   -49    29
   196   899   113  -192   -71   -43    -8   -44
  -192   113   899   196    61    49     8    52
   407  -192   196   611     8    44    59   -23
    -8   -71    61     8   411  -599   208   208
   -52   -43    49    44  -599   411   208   208
   -49    -8     8    59   208   208    99  -911
    29   -44    52   -23   208   208  -911    99

5、Wilkinson矩陣:Wilkinson特徵值測試矩陣

>> wilkinson(3)

ans =

     1     1     0
     1     0     1
     0     1     1

>> wilkinson(5)

ans =

     2     1     0     0     0
     1     1     1     0     0
     0     1     0     1     0
     0     0     1     1     1
     0     0     0     1     2

6、Hilbert矩陣

也成為H陣,其元素,由於它是一個條件數差的矩陣,所以將它用來作為試驗矩陣。

hilb(n):用於生成n x n的Hilbert矩陣

invhilb(n):用於生成n x n的Hilbert矩陣的逆矩陣整數矩陣。

>> a=hilb(3)

a =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

>> b=invhilb(3)

b =

     9   -36    30
   -36   192  -180
    30  -180   180

可以看出Hilbert矩陣和他的逆矩陣都是對稱矩陣。

7、Toeplitz矩陣

他由兩個向量定義,一個行向量和一個列向量。對稱的Toeplitz矩陣由單一向量來定義。

toeplizt(k,r):用於生成非對稱Toeplitz矩陣,第一列為k,第一行為r,其餘元素等於其左上角元素

toeplitz(c):向量c生成一個對稱的Toeplitz矩陣

>> toeplitz(2:4,2:2:8)

ans =

     2     4     6     8
     3     2     4     6
     4     3     2     4

>> toeplitz(2:8)

ans =

     2     3     4     5     6     7     8
     3     2     3     4     5     6     7
     4     3     2     3     4     5     6
     5     4     3     2     3     4     5
     6     5     4     3     2     3     4
     7     6     5     4     3     2     3
     8     7     6     5     4     3     2

8、0~1間均勻分佈的隨機矩陣

r=rand(n):產生nxn的0~1間均勻分佈的隨機矩陣

r=rand(m,n):產生mxn的0~1間均勻分佈的隨機矩陣,r=rand(m,n,p.....):與前者類似、

r=rand(size(A)):產生與A相同的0~1間均勻分佈矩陣

>> r=rand(3)

r =

    0.7094    0.6797    0.1190
    0.7547    0.6551    0.4984
    0.2760    0.1626    0.9597

>> r=rand(3,4)

r =

    0.3404    0.7513    0.6991    0.5472
    0.5853    0.2551    0.8909    0.1386
    0.2238    0.5060    0.9593    0.1493

>> a=[1 2;3 4]

a =

     1     2
     3     4

>> r=rand(size(a))

r =

    0.2575    0.2543
    0.8407    0.8143

9、標準正態分佈隨機矩陣

常用randn()函式產生均值為零、方差為1的隨機矩陣

呼叫方式如下:

r=rand(n)

r=rand(m,n)

r=rand(size(A))

r=randn([m,n,......])

>> b=randn(3)

b =

   -0.1924   -1.4023   -0.1774
    0.8886   -1.4224   -0.1961
   -0.7648    0.4882    1.4193

>> b=randn(3,4)

b =

    0.2916   -0.8045   -0.2437   -1.1480
    0.1978    0.6966    0.2157    0.1049
    1.5877    0.8351   -1.1658    0.7223

>> b=randn([3,4])

b =

    2.5855   -0.0825   -1.7947    0.1001
   -0.6669   -1.9330    0.8404   -0.5445
    0.1873   -0.4390   -0.8880    0.3035

10、Vandermonde矩陣

A=vander(V):生成Vandermonde矩陣,矩陣的列是向量v的冪,

>> vander([1 2 3 4])

ans =

     1     1     1     1
     8     4     2     1
    27     9     3     1
    64    16     4     1

>> vander([1 ;2 ;3 ;4])

ans =

     1     1     1     1
     8     4     2     1
    27     9     3     1
    64    16     4     1

11、魔方矩陣:每行,每列,兩對角線上的元素和相等

>> a=magic(5)

a =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9