2021年6月6日 星期日

二維矩陣與陣列

 二維矩陣與陣列

源自於http://bime-matlab.blogspot.com/2006/09/24.html

二維矩陣是MATLAB最常用的型式,其應用也符合數學運算的原則。但是,在MATLAB中也獨自創出其特有的運算法,使矩陣的運算更為靈活。矩陣的大小通常列數乘行數表示,如[2x3]即為二列三行之矩陣,以A為例:

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

A =

     1     2     3

     4     5     6

上述變數A可利用鍵盤輸入矩陣,但要記得利用分號隔出另一列,各列中之元素則仍以空格或分號區隔,其方式與前面所述之行、列向量之使用相同。上面所得之矩陣A是為2x3的矩陣。在MATLAB中也有一個指令size可以檢查其大小,例如:


>>m=size(A)
m =
2 3

這時候m本身也是一個列矩陣,其第一元素2代表二列,第二元素3代表三行。 [2x3]2列3行之矩陣

矩陣與矩陣之間,可以作線性代數之運算。以M=magic(4)為例:

>>M=magic(4)
M=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1


將M作移置後,再相加,得:

M=magic(4)
M =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
>> M1=M'
M1 =
    16     5     9     4
     2    11     7    14
     3    10     6    15
    13     8    12     1
>> M2=M+M1
M2 =
    32     7    12    17
     7    22    17    22
    12    17    12    27

兩矩陣亦可相乘,可以產生另一矩陣:
>> M*M1
ans =
   438   236   332   150
   236   310   278   332
   332   278   310   236
   150   332   236   438

>> M1*M
ans =
   378   206   212   360
   206   370   368   212
   212   368   370   206
   360   212   206   378
矩陣M之判定式為零,可以利用以下指令計算:

>>m=det(M)
m=
0
陣列(array)為矩陣之特殊型式,其外觀型式與矩陣相同,只是陣列之意義在於元素與元素間的一對一的關係,故常以行矩陣為主。陣列之操作,除加法與減法與矩陣相同外,其餘乘、除、倒除、次方、移置等均需在其對應符號(*、/、\、^、')之
前加點(.)號,以表示是元素與元素間一對一的操作。例如,前面之M矩陣,以陣列相乘考慮時為:
>> M.*M1      %對應符號(*、/、\、^、')之前加點(.)號
ans =
   256    10    27    52
    10   121    70   112
    27    70    36   180
    52   112   180     1

>> M1.*M    %對應符號(*、/、\、^、')之前加點(.)號
ans =
   256    10    27    52
    10   121    70   112
    27    70    36   180
    52   112   180     1

建立一般表格

利用陣列之觀念,亦可創造不同意義之矩陣,或以矩陣型式表示之對照表格,這可以將不同行矩陣以中括號組合而成之新矩陣表示之,例如:
>> m=(0:9)'

m =

     0
     1
     2
     3
     4
     5
     6
     7
     8
     9
 
>> able=[m m.^2 2.^m]   %對應符號(*、/、\、^、')之前加點(.)號

able =
     0     0     1
     1     1     2
     2     4     4
     3     9     8
     4    16    16
     5    25    32
     6    36    64
     7    49   128
     8    64   256
     9    81   512



以10為底的對數函數表:

>> format short g
>> x = (1:0.1:2)'
x =
            1
          1.1
          1.2
          1.3
          1.4
          1.5
          1.6
          1.7
          1.8
          1.9
            2

>> logs = [x log10(x)]
logs =
            1            0
          1.1     0.041393
          1.2     0.079181
          1.3      0.11394
          1.4      0.14613
          1.5      0.17609
          1.6      0.20412
          1.7      0.23045
          1.8      0.25527
          1.9      0.27875
            2      0.30103

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...