MATLAB Learning Days---------矩陣與向量

矩陣相乘

基本操作

特殊類型矩陣

引用矩陣元素

行列式與線性方程組求解

矩陣相乘:

如果A是一個mXp矩陣,而B是pXn矩陣,它們就可以相乘產生mXn矩陣。
在此介紹兩個經常出錯的概念:

矩陣的相乘與數組的相乘;

  • 矩陣的相乘:

     兩個矩陣的階數可以不同,可以點乘(數量積)也可以叉乘(向量積)
    
  • 數組的相乘

     數組的相乘是點乘(數量積),得到的是一個數
    
>> A = [2 1; 1 2];
>> B = [3 4; 5 6];
>> A.*B
ans =
     6     4
     5    12

現在我們把“.”去掉,進行結果不同的矩陣相乘:

>>  A * B
ans =
    11    14
    13    16

下面是一個例子:
矩陣A是一個3X2矩陣,而B是一個2X3矩陣,由於A的列數和B的行數相匹配 。我們可以計算AB的向量積

>> A = [1 4;8 0; -1 3];
>> B = [-1 7 4;2 1 -2];
>> C = A * B
C =
     7    11    -4
    -8    56    32
     7    -4   -10

雖然這種形式的矩陣可以進行相乘,但不能進行數組的相乘,要使用數組相乘,行數和列數必須相等

更多基本操作

  • 矩陣加上某個元素
  • 矩陣的左除與右除
  • 矩陣元素的平方

MATLAB允許你把數量添加到一個數組(向量或者矩陣)中,即把數加到數組的每個元素中。

>> A = [1 2 3 4];
>> b = 2;
>> C = A + b
C =
     3     4     5     6
矩陣的左除與右除

這時數組元素與元素相匹配,因此兩個數組必須等大。

  • 右除:
>> A = [2 4  6 8];
>> B = [2 2 3 1];
>> C = A./B
C =
     1     2     2     8
  • 左除:
>> E = A.\B 
E =
    1.0000    0.5000    0.5000    0.1250

E = A.\BE = B./A相同

  • 對數組的每個元素平方:
>> B = [2 4; -1 6];
>> B.^2
ans =
     4    16
     1    36

特殊類型矩陣:

  • 單位矩陣:

     主對角線元素全爲1,其餘全爲0的方形矩陣。
    

使用以下命令創建一個nxn的單位矩陣

eye(n);
>> eye(5)
ans =
     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
  • 零矩陣:
  1. nxn階矩陣:
zeros(n);
>> zeros(4)
ans =
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
  1. mxn階矩陣
zeros(m,n);
>> zeros(4,5)
ans =
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
  • 元素全爲1:元素全爲1的n階矩陣
ones(n);
>> ones(4)
ans =
     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

元素全爲1的mxn階矩陣

ones(m,n);
>> ones(4,5)
ans =
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

引用矩陣元素

MATLAB中,矩陣的單個元素或者整列都能夠被引用

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

可以用A(m,n)選出第m行第n列的元素:

>> A(2,3)
ans =
     6

用A(:,i)引用第i列的全部元素:

>> A(:,2)

ans =

     2
     5
     8

使用A(:,i:j)選出從第i列到第j列的所有元素

>> A(:,2:3)
ans =
     2     3
     5     6
     8     9

也可以選出矩陣特定的一小塊:

>> A(2:3,1:2)
ans =
     4     5
     7     8

也可以通過引用改變矩陣的值,例如把第一行第一列的值改爲-8

>> A(1,1) = -8
A =
    -8     2     3
     4     5     6
     7     8     9

要在MATLAB中創建空數組,只需在方括號裏留空即可,它可以用來刪除行或者列。
刪除矩陣的第二行:

>>  A(2,:) = []
A =
    -8     2     3
     7     8     9

通過複製矩陣中的元素來創建新的矩陣:
複製矩陣的第一行四次來創建一個新的矩陣:

A =
    -8     2     3
     7     8     9

>> E = A([1,1,1,1],:)

E =

    -8     2     3
    -8     2     3
    -8     2     3
    -8     2     3

又如,引用兩次A的第一行創建新的矩陣:

>> A = [-8, 2, 3;7, 8, 9];
>> F = A([1,2,1],:)

F =

    -8     2     3
     7     8     9
    -8     2     3

行列式與線性方程組求解

用係數矩陣左除向量矩陣(方程右邊的值組成的矩陣)

要計算矩陣A的行列式的值,只需用命令det(A),如:
2X2矩陣的行列式:

>> A = [1 3;4 5];
>> det(A)
ans =
    -7

4X4矩陣的行列式:

>> B = [3 -1 2 4; 0 2 1 8; -9 17 11 3; 1 2 3 -3];
>> det(B)
ans =
 -533.0000

考慮下面的方程組:

5x + 2y -9z = -18
-9x - 2y + 2z  = -7
6x + 7y + 3z = 29

解這樣的方程組需要兩步:
首先求係數矩陣A的行列式,在本例中:

>> A = [5 2 -9; -9 -2 2; 6 7 3];
>> A

A =

     5     2    -9
    -9    -2     2
     6     7     3

>> det(A)

ans =

   437

如果行列式不爲0,說明有解,解是列向量:

 X = [x;y;z]

使用左除就可以得到解,不過要先創建由方程右邊組成的向量:

b = [-18;-7;29]
b =
   -18
    -7
    29

解爲:

>> A\b
ans =
    1.0000
    2.0000
    3.0000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章