矩陣和陣列
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版 張志湧編著,北京航空航天大學出...