幾乎所有變量在matlab中都可以視為矩陣(1 x 1元素,1 x n向量,m x n矩陣等),matlab中對矩陣/向量的操作非常多,個人認為對矩陣的操作是體現matlab功底的地方;靈活搭配使用這些基本的函數,能夠實現很多功能,下面給出一些matlab中個人常用的對矩陣/向量操作的示例:
一、創建矩陣:
(1)創建全零/全一矩陣:
1 A = zeros(3,2) 2 B = ones(3,2)
二、提取矩陣的一部分:
(1)提取矩陣的某個元素:
1 A = [1,2;3,4;5,6]; 2 a = A(2,1); % 提取矩陣 A 第 2 行第 1 列元素 ,a = 3;
(2)提取某一列(行)矩陣:
提取矩陣某一行:
1 A = [1,2;3,4;5,6] 2 a = A(2,:) % 提取矩陣 A 第 2 行所有元素,這里:表示“所有”
同理,提取矩陣某一列:
1 A = [1,2;3,4;5,6] 3 a = A(:,1) % 提取矩陣 A 第 1 列所有元素,這里:表示“所有”
(3)提取奇數/偶數列(行):
提取矩陣奇數行:
1 A = [1,2;3,4;5,6] 2 a = A(1:2:end ,:) % 提取矩陣 A 奇數行所有元素,這里:表示“所有”,2為步長
同理,提取矩陣偶數列:
1 B = [1,2,3,4;2,3,4,5;4,5,6,7;5,6,7,8] 2 b = B( :,2:2:end) % 提取矩陣 B 偶數列所有元素,這里:表示“所有”,第一個2為起始列,第二個2為步長
三、矩陣的拼接:
1 A = [1,2;3,4;5,6] 2 B = [7,8;9,10;11,12] 3 4 C = [A,B] % 或 C = [A B],“,”或“ ”表示橫向連接 5 D = [A;B] % “;”表示縱向連接
四、改變矩陣形狀(重構矩陣):
B = reshape(A,m,n); % 把矩陣A變成 m,n的矩陣B ,要求矩陣A、B的元素個數保持一致 = m x n
1 A = [1,2;3,4;5,6]
2 B = reshape(A,2,3) % 把矩陣 3 行 2 列的矩陣A變成 2 行 3 列的矩陣B
五、矩陣逆序
橫向逆序:B = fliplr(A);
縱向逆序:B = flipud(A);
示例:
常用:將向量逆序排列:
1 A = [1,2,3,4,5,6,7,8]; 2 B = fliplr(A) % 橫向逆序,B = 8 7 6 5 4 3 2 1
1 A = [1,2;3,4;5,6] 3 B = flipud(A) % 縱向逆序 4 C = fliplr(A) % 橫向逆序
結果:
1 A = 2 3 1 2 4 3 4 5 5 6 6 7 8 B = 9 10 5 6 11 3 4 12 1 2 13 14 15 C = 16 17 2 1 18 4 3 19 6 5
六、矩陣其他小操作
(1)、求矩陣的轉置
1 A = A'
(2)、求矩陣的秩:
1 r = rank(A)
(3)、化簡成行階梯形矩陣:
1 B = rref(A)
(4)、求矩陣的逆:
1 inv(A) 或 2 A^-1
(5)、求矩陣的跡:
1 t = trace(A)
(6)、求方陣的行列式的值:
1 d = det(A)
(7)、求矩陣的行列數:
1 [m,n] = size(A) % m:矩陣的行數,n:矩陣的列數
只判斷行或列數:
1 m = size(A,1) % m返回size函數的第1個變量:行數
1 n = size(A,2) % n返回size函數的第2個變量:列數
七、自己編寫的小模塊
(1)、將向量統一變成行向量:
1 % 判斷signal是否為列向量,最后都調整為行向量 2 if size(A,2) == 1 % 代表是列向量 3 A = A'; 4 end