一 矩陣和陣列

2021-08-28 04:25:02 字數 4246 閱讀 6450

矩陣和陣列

matlab 是「matrix laboratory」的縮寫形式。matlab® 主要用於處理整個的矩陣和陣列,而其他程式語言大多逐個處理數值。

所有 matlab 變數都是多維陣列,與資料型別無關。矩陣是指通常用來進行線性代數運算的二維陣列。

陣列建立

要建立每行包含四個元素的陣列,請使用逗號 (,) 或空格分隔各元素。

a = [1 2 3 4]

a = 1×4

1     2     3     4
這種陣列為行向量。

要建立包含多行的矩陣,請使用分號分隔各行。

a = [1 2 3; 4 5 6; 7 8 10]

a = 3×3

1     2     3

4 5 6

7 8 10

建立矩陣的另一種方法是使用 ones、zeros 或 rand 等函式。例如,建立乙個由零組成的 5×1 列向量。

z = zeros(5,1)

z = 5×1

0

0 00 0

產生乙個5*5的矩陣

z=ones(5)

z =

1     1     1     1     1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

z=ones(1*5)

z =

1     1     1     1     1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

z= zeros(5)

z =

0     0     0     0     0

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

用rand產生0~1之間的隨機數

z= rand(5,1)

z =

0.8147

0.9058

0.1270

0.9134

0.6324

用rand產生1~10之間的隨機數

z=rand(5,1)*10

z =

1.5761

9.7059

9.5717

4.8538

8.0028

矩陣和陣列運算

matlab 允許您使用單一的算術運算子或函式來處理矩陣中的所有值。

a + 10

ans = 3×3

11    12    13

14 15 16

17 18 20

sin(a)

ans = 3×3

0.8415    0.9093    0.1411
-0.7568 -0.9589 -0.2794

0.6570 0.9894 -0.5440

要轉置矩陣,請使用單引號 (『):

a = [1 2 3; 4 5 6; 7 8 10]

a =

1     2     3

4 5 6

7 8 10

a』

ans = 3×3

1     4     7

2 5 8

3 6 10

您可以使用 * 運算子執行標準矩陣乘法,這將計算行與列之間的內積。例如,確認矩陣乘以其逆矩陣可返回單位矩陣:

p = a*inv(a)

p = 3×3

1.0000         0   -0.0000

0 1.0000 0

0 0 1.0000

如果不確認矩陣乘以其逆矩陣可返回單位矩陣,則會出現提示

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

a =

1     2     3

4 5 6

7 8 9

p=a*inv(a)

警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不準確。rcond = 2.202823e-18。

p =

0     1     0

-4 2 0

-4 3 2

警告解釋:

矩陣的行列式等於零或者計算出來是個絕對值很小的數值,同時作為了除數(分母),計算得到了無窮大的值,溢位了計算機的資料儲存。如果此時你使用的浮點數,而「確保」矩陣不是奇異的,只是接近奇異,那麼你可以考慮使用雙精度浮點數等精度更高的數。例如0.000001在浮點數裡就是0.0000,作為除數肯定會「nan」,而在雙精度裡是原來的值。

求矩陣的行列式

det(a)

ans =

-9.5162e-16

format long

p = a*inv(a)

p = 3×3

1.000000000000000 0 -0.000000000000000

0 1.000000000000000 0

0 0 0.999999999999998

使用以下命令將顯示內容重置為更短格式

format short

format 僅影響數字顯示,而不影響 matlab 對數字的計算或儲存方式。

要執行元素級乘法(而非矩陣乘法),請使用 .* 運算子:

p = a.*a

p = 3×3

1     4     9

16 25 36

49 64 100

乘法、除法和冪的矩陣運算子分別具有執行元素級運算的對應陣列運算子。例如,計算 a 的各個元素的三次方:

a.^3

ans = 3×3

1           8          27

64 125 216

343 512 1000

串聯

串聯是連線陣列以便形成更大陣列的過程。實際上,第乙個陣列是通過將其各個元素串聯起來而構成的。成對的方括號 即為串聯運算子。

a = [a,a]

a = 3×6

1     2     3     1     2     3

4 5 6 4 5 6

7 8 10 7 8 10

使用逗號將彼此相鄰的陣列串聯起來稱為水平串聯。每個陣列必須具有相同的行數。同樣,如果各陣列具有相同的列數,則可以使用分號垂直串聯。

a = [a; a]

a = 6×3

1     2     3

4 5 6

7 8 10

1 2 3

4 5 6

7 8 10

複數

複數包含實部和虛部,虛數單位是 -1 的平方根。

sqrt(-1)

ans = 0.0000 + 1.0000i

要表示複數的虛部,請使用 i 或 j。

c = [3+4i, 4+3j; -i, 10j]

c = 2×2 complex

3.0000 + 4.0000i 4.0000 + 3.0000i

0.0000 - 1.0000i 0.0000 +10.0000i

由於學習需要最近需要matlab,準備更新系列博文。博文主要是matlab官方博文,中間插入個人實驗出現的問題及解決方法,歡迎指正。

矩陣和陣列

matlab 是 matrix laboratory 的縮寫形式。matlab 主要用於處理整個的矩陣和陣列,而其他程式語言大多逐個處理數值。所有 matlab 變數都是多維陣列,與資料型別無關。矩陣是指通常用來進行線性代數運算的二維陣列。要建立每行包含四個元素的陣列,請使用逗號 或空格分隔各元素。...

python中矩陣和陣列

我感覺張量是乙個統稱,陣列 矩陣這些都可被稱為張量。矩陣是陣列的特例。當陣列是二維的時候,就可以稱為矩陣。矩陣和二維陣列在某些場合可以通用。建立陣列 建立陣列時,錯誤的 將數值當作引數,array 裡面的引數應該是 9乙個列表或者乙個元組或者說在外觀上已經是乙個陣列了 numpy庫中的array將其...

python矩陣左除 矩陣和陣列的區別

陣列中的元素可以是字元等 矩陣中的只能是數 這是二者最直觀的區別。因為矩陣是乙個數學概念 線性代數裡的 陣列是個計算機上的概念。你見過純粹數學中有陣列的概念嗎?沒有。因為計算機上 準確的說是資訊科學中 常用到線性代數的知識,就引用了矩陣的概念。精通matlab6.5版 張志湧編著,北京航空航天大學出...