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
矩陣的運算
矩陣的代數運算
矩陣的算術運算
>> 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
矩陣的運算函數
>> 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
矩陣的元素群運算
元素群運算,是指矩陣中的所有元素按單個元素進行運算,也即是對應位置進行運算。
>> 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函數運算都是分別作用於函數變量(矩陣)的每一個元素。
>> 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。
>> 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”表示。邏輯運算規則與關系運算基本一致,也是針對兩個矩陣的對應元素。
>> 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