MATLAB的矩陣運算


  MATLAB是基於矩陣和數組計算的,可以直接對矩陣和數組進行整體的操作,MATLAB有三種矩陣運算類型:矩陣的代數運算、矩陣的關系運算和矩陣的邏輯運算。其中,矩陣的代數運算應用最廣泛。本文主要講述矩陣的基本操作,涉及矩陣的創建、矩陣的代數運算、關系運算和邏輯運算等基本知識。

矩陣的創建

直接輸入法創建矩陣

% 1. 直接輸入法創建矩陣
>> A = [1,2,3; 4,5,6; 7,8,9]

A =

     1     2     3
     
     4     5     6
     7     8     9

函數法創建矩陣

簡單矩陣

% 2. 函數法創建矩陣
>> zeros(3)
% 生成3x3的全零矩陣
ans =

     0     0     0
     0     0     0
     0     0     0
  
>> zeros(3,2)
% 生成3x2的全零矩陣
ans =

     0     0
     0     0
     0     0
  
 >> eye(3)
% 生成單位矩陣
ans =

     1     0     0
     0     1     0
     0     0     1
     
>> ones(3)
% 生成全1矩陣
ans =

     1     1     1
     1     1     1
     1     1     1
 
>> magic(3)
% 生成3x3的魔方陣
ans =

     8     1     6
     3     5     7
     4     9     2
     
 >> diag(1:3)
% 對角矩陣
ans =

     1     0     0
     0     2     0
     0     0     3
>> diag(1:5,1)
% 對角線向上移1位矩陣
ans =

     0     1     0     0     0     0
     0     0     2     0     0     0
     0     0     0     3     0     0
     0     0     0     0     4     0
     0     0     0     0     0     5
     0     0     0     0     0     0
     
>> diag(1:5,-1)
% 對角線向下移1位矩陣
ans =

     0     0     0     0     0     0
     1     0     0     0     0     0
     0     2     0     0     0     0
     0     0     3     0     0     0
     0     0     0     4     0     0
     0     0     0     0     5     0
     
 >> triu(ones(3,3))
% 上三角矩陣
ans =

     1     1     1
     0     1     1
     0     0     1

>> tril(ones(3,3))
% 下三角矩陣
ans =

     1     0     0
     1     1     0
     1     1     1    
     

隨機矩陣

 >> rand(3)
% 生成隨機矩陣
ans =

    0.2898    0.8637    0.0562
    0.4357    0.8921    0.1458
    0.3234    0.0167    0.7216
 
>> rand('state',0); % 設定種子數,產生特定種子數下相同的隨機數
>> rand(3)

ans =

    0.9501    0.4860    0.4565
    0.2311    0.8913    0.0185
    0.6068    0.7621    0.8214

>> a = 1; b = 100;
>> x = a + (b-a)* rand(3)
% 產生區間(1,100)內的隨機數
x =

   38.2127   20.7575   91.1133
   89.9610   31.0064   53.0040
   43.4711   54.2917   31.3762


>>  a = 1; b = 100;
>> a + fix(b * rand(1,50))
% 產生50個[1,100]內的隨機正整數
ans =

  列 1 至 15

     4    72    77     6    63    27    32    53    41    90    58    57    40    70    57

  列 16 至 30

    35    60    28     5    84    11    73    45   100    57    47    42    22    24    32

  列 31 至 45

    87    26    97    31    38    35    71    62    76    80    22    90    90    94    28

  列 46 至 50

    48    26    37    53    39

相似函數擴展

>> randn(3)
% 生成均值為0,方差為1的正太分布隨機數矩陣
ans =

   -0.4326    0.2877    1.1892
   -1.6656   -1.1465   -0.0376
    0.1253    1.1909    0.3273
    
>> randperm(10)
% 生成1-10之間隨機分布10個正整數
ans =

     4     9    10     2     5     8     1     3     7     6
     
 % 多項式x^3 - 7x  + 6 的伴隨矩陣    
>> u = [1,0,-7,6];
>> A = compan(u)
% 生成伴隨矩陣
A =

     0     7    -6
     1     0     0
     0     1     0

>> eig(A)  % 此處eig()函數用於求特征值
% 利用伴隨矩陣求得方程的根
ans =

   -3.0000
    2.0000
    1.0000 

矩陣的運算

矩陣的代數運算

矩陣的算術運算

image.png

>> A = [1,1;2,2];
>> B = [1,1;2,2];
>> A

A =

     1     1
     2     2

>> B

B =

     1     1
     2     2
     
>> A + B

ans =

     2     2
     4     4

>> B-A

ans =

     0     0
     0     0
     
>> A * B

ans =

     3     3
     6     6 
     
>> A^2

ans =

     3     3
     6     6  

>> A^3

ans =

     9     9
    18    18  

矩陣的運算函數

image.png

>> C = magic(3)

C =

     8     1     6
     3     5     7
     4     9     2

>> size(C)

ans =

     3     3

>> length(C)

ans =

     3

>> sum(C)

ans =

    15    15    15

>> max(C)

ans =

     8     9     7

>> C'

ans =

     8     3     4
     1     5     9
     6     7     2


>> inv(C)

ans =

    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

矩陣的元素群運算


元素群運算,是指矩陣中的所有元素按單個元素進行運算,也即是對應位置進行運算。image.png


>> A = [1,2;3,4];
>> B = [1,2;3,4];
>> A .* B

ans =

     1     4
     9    16

>> A ./ B

ans =

     1     1
     1     1

>> A .\ B

ans =

     1     1
     1     1

>> A .^ B

ans =

     1     4
    27   256

矩陣元素群的運算函數

MATLAB提供了幾乎所有初等函數,包括三角函數、對數函數、指數函數和復數運算函數等。大部分的MATLAB函數運算都是分別作用於函數變量(矩陣)的每一個元素。
image.png

>> x = [0, pi/6, pi/4, pi/3];
>> y = tan(x)

y =

         0    0.5774    1.0000    1.7321

>> y = sin(x)

y =

         0    0.5000    0.7071    0.8660        

矩陣的關系運算

在使用關系運算時,首先應保證兩個矩陣的維數相等或至少一個為標量。若參與運算的對象為兩個矩陣,則關系運算對兩個矩陣的對應元素進行關系比較,若關系滿足,則將結果矩陣中該位置的元素置1,否則置0。若參與運算的對象之一為標量,則關系運算將矩陣的每一個元素與該標量逐一進行關系比較,若關系滿足,則將結果矩陣中該位置的元素置1,否則置0。image.png

>> A  = [1,1;1,1];
>> B = [0,1;2,3];
>> A > B

ans =

  2×2 logical 數組

   1   0
   0   0

>> A >= B

ans =

  2×2 logical 數組

   1   1
   0   0

>> A == B

ans =

  2×2 logical 數組

   0   1
   0   0

>> A ~= B

ans =

  2×2 logical 數組

   1   0
   1   1

矩陣的邏輯運算

邏輯運算中,所有非零元素的邏輯值為“真”,用代碼“1”表示;值為零的元素的邏輯值為“假”,用代碼“0”表示。邏輯運算規則與關系運算基本一致,也是針對兩個矩陣的對應元素。
image.png

>> A & B

ans =

  2×2 logical 數組

   0   1
   1   1

>> A | B

ans =

  2×2 logical 數組

   1   1
   1   1

 
>> ~ A

ans =

  2×2 logical 數組

   0   0
   0   0

>> ~B

ans =

  2×2 logical 數組

   1   0
   0   0


免責聲明!

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



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