matlab對矩陣/向量的常用操作(拼接矩陣、向量逆序、改變矩陣形狀、求行階梯形矩陣、提取矩陣的一部分等)


幾乎所有變量在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM