Matlab線性代數基礎---矩陣操作

2、矩陣的基本操作
2.1 矩陣的修改
1、矩陣的擴充:D = [A;B C] A爲原來的矩陣,B C爲包含要擴充的元素,D爲擴充結果
2、刪除行:A= [m; :] = [ ]:刪除m行
3、A=[:,n]=[ ]:刪除第n列
4、A(m,n)=a,對m行n列的元素進行賦值爲a。
5、A(m, :)=[a,b……]:對m行進行賦值。
6、A(:, n)=[a,b……]:對n列進行賦值。
實例:

>> A = magic(5
A =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
>> A(:,4:5)=[]%%45行進行賦值爲空,即爲刪除45行。
A =
    17    24     1
    23     5     7
     4     6    13
    10    12    19
    11    18    25

2.矩陣的拼接:cat()、vercat()、horzcat();
調用格式:
C = cat(dim,A ,B):參數dim爲連接方向,dim的選值:
dim = 1,垂直方向上拼接矩陣;
dim = 2,水平方向上拼接矩陣;
dim = 3, 生成三維矩陣。
C = horzcat(A1,A2,A3,……),水平方向拼接多個矩陣A1,A2……,此時參數中的矩陣必須具有相同的行數。
C = vercat(A1,A2,A3,……),豎直方向拼接多個矩陣A1,A2……,此時參數中的矩陣必須具有相同的列數。
矩陣拼接的實例:

>> A = magic(3);
B = pascal(3);
C = cat(3,A,B);
D = vertcat(A,B);
>> E = horzcat(A,B);
>> C
C(:,:,1) =
     8     1     6
     3     5     7
     4     9     2
C(:,:,2) =
     1     1     1
     1     2     3
     1     3     6
>> D
D =
     8     1     6
     3     5     7
     4     9     2
     1     1     1
     1     2     3
     1     3     6
>> E
E =
     8     1     6     1     1     1
     3     5     7     1     2     3
     4     9     2     1     3     6
>> 

2.3矩陣的變向:
rot90(A):實現矩陣A的逆矩陣的90°;
rot90(A,k);實現矩陣A逆時針旋轉90°的k倍;
filplf(A):實現A矩陣的左右翻轉;
flipud(A):實現A矩陣的上下翻轉。

旋轉的實例:

>> A
A =
     8     1     6
     3     5     7
     4     9     2
>> rot90(A)
ans =
     6     7     2
     1     5     9
     8     3     4

>> flipud(A)
ans =
     4     9     2
     3     5     7
     8     1     6
>>

2.4矩陣的抽取:主要是實現對對角元素和上下三角陣的抽取。對角矩陣和三角矩陣的抽取調用格式爲:
X = diag(V,k);其中V是一個向量,k爲相對於矩陣X的對角線的偏移,K大於1,表示在對角線以上(右上)反之:k爲負數,在主對角線左下。當k=0,表示對v賦值爲X的主對角線。
實例:

X = diag(v,k)的運用實例:
以向量v的元素作爲矩陣X的第k條對角線元素,當k=0時,v爲X的主對角線;當k>0時,v爲上方第k條對角線;當k<0時,v爲下方第k條對角線。
例:
>> v=[1 2 3];
>> x=diag(v,-1)
x =
     0     0     0     0
     1     0     0     0
     0     2     0     0
     0     0     3     0
>> X = diag([1,1,1],0)
X =
     1     0     0
     0     1     0
     0     0     1
>> 

矩陣的抽取tril()函數
L =tril(X):返回X矩陣的下三角部分,其餘部分以0補全;
L = tril(X,k):返回X矩陣的第k 條對角線以下的元素,其餘補全0;k=0爲表示爲主對角線,k<0爲左下,k>0爲右上。
L =triu(X):返回矩陣X的上三角部分。
L = triu(X,k):返回X矩陣的第k 條對角線以上的元素,其餘補全0;k=0爲表示爲主對角線,k<0爲左下,k>0爲右上。
實例:

>> tril(ones(4,4),-1)
ans =
     0     0     0     0
     1     0     0     0
     1     1     0     0
     1     1     1     0
>> triu(ones(4,4),-1)
ans =
     1     1     1     1
     1     1     1     1
     0     1     1     1
     0     0     1     1
>> 

2.5矩陣塊操作:
矩陣的分塊操作調用格式:
B =repmat(A,m,n)或者B = repmat(A,[m,n]):產生大的矩陣B,對矩陣A 這個塊進行mxn的合成:最後生成的B的A的行列數乘以mxn的分別積
例子:A爲2x2,生成mxn爲2x3的矩陣,結果爲4x9列。

>>B=repmat( [1 2;3 4],2,3)%A爲2x2,生成mxn爲2x3的矩陣,結果爲4x9列。
B = 
1      2      1     2    1    2
3      4      3     4    3    4
1     2     1     2     1     2
3     4     3     4     3     4

B =repmat(A,[m,n,p]):A爲矩陣,m,n,p分別是生成m行、n列、p維的矩陣
例子:

 B = repmat(eye(2),[2,1,2])
B(:,:,1) =
     1     0
     0     1
     1     0
     0     1
B(:,:,2) =
     1     0
     0     1
     1     0
     0     1
>> 

另外還有一個塊操作函數:blkdiag(a,b,c,d……),把a,b,c,d多個矩陣作爲對象塊,產生新的矩陣。

3.6、矩陣的轉置:A’
例子:

>> a = [1,2,3;4,5,6]
a =
     1     2     3
     4     5     6
>> a'
ans =
     1     4
     2     5
     3     6

從例子中看得出:矩陣轉置就是行變換爲列,列變換爲行。

3.7、矩陣的尺寸改變
reshape(B,m,n, p):B爲待2重置的矩陣,m,n,p爲新建的行、列、頁數
reshape(B,……[ ] ,……):B爲待重置的數組,【】爲被置空的列或者行,其中【】x行(列)等於B的總元素數。
注意,改變矩陣的尺寸,但是矩陣的總元素數不變:sum(size(B))=m+n+p。
實例:

>> A = [1 2 3 4;7 8 9 6;4 5 7 9;1 5 7 9]
A =
     1     2     3     4
     7     8     9     6
     4     5     7     9
     1     5     7     9
>> b= reshape(A,2,8)
b =
     1     4     2     5     3     7     4     9
     7     1     8     5     9     7     6     9
>> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章