天天看點

Matlab基礎(4)——矩陣

Matlab基礎教程(4)——矩陣

文章目錄

  • ​​Matlab基礎教程(4)——矩陣​​
  • ​​矩陣建立與編輯​​
  • ​​矩陣運算​​

矩陣是由

個數

排成的

列數表,記成

含有

維行向量,

維列向量。

矩陣建立與編輯

建立 - 直接輸入

用​

​[]​

​​定義矩陣,同一行的元素用​

​,​

​​或空格分割,不同行的元素用​

​;​

​或回車分割

矩陣的大小不需要預先定義,若​

​[]​

​中不寫元素,表示空矩陣

建立 - 從檔案中讀取

可以将較為常用的矩陣寫入​

​.m​

​​檔案,調用時直接運作該檔案,即可在工作台看到相應矩陣。除此之外,可以使用​

​load​

​​指令調用​

​.txt​

​等類型的檔案。

建立 - 用函數生成特殊矩陣

可以用某些函數生成具有某些特點的矩陣,常用函數如下

函數 說明

​eye(n)​

​​ ​

​eye(m,n)​

​​ ​

​eye(size(A))​

建立指定大小的機關矩陣

​ones(n)​

​​ ​

​ones(m,n)​

​​ ​

​ones(size(A))​

建立指定大小矩陣,其中元素均為1

​zeros(n)​

​​ ​

​zeros(m,n)​

​​ ​

​zeros(size(A))​

建立指定大小矩陣,其中元素均為0

​rand(n)​

​​ ​

​rand(m,n)​

​​ ​

​rand(size(A))​

建立指定大小矩陣,其中元素服從範圍内的均勻分布

​randn(n)​

​​ ​

​randn(m,n)​

​​ ​

​randn(size(A))​

建立指定大小矩陣,其中元素服從标準正态分布

​compan(P)​

建立系數向量為的多項式的伴随矩陣

​diag(v)​

建立以向量中的元素為對角線的對角陣

​hilb(n)​

建立一個的Hilbert矩陣

​magic(n)​

建立一個階幻方

​sparse(A)​

将矩陣轉化為稀疏矩陣形式,即由的非零元素和下标構成稀疏矩陣

矩陣拼接

A = [1 2 3 4];
B = zeros(2);
C = ones(2);
D = [A; B C]
% D =
% 
%      1     2     3     4
%      0     0     1     1
%      0     0     1     1      

用​

​,​

​或空格銜接,以實作矩陣的橫向拼接,如上例中的矩陣與矩陣

用​

​;​

​或換行銜接,以實作矩陣的縱向拼接,如上例中的矩陣與拼接矩陣

引用矩陣中的某些元素

對矩陣的每個次元均指定一個索引,即可引用相應的資料。

索引可以是标量(一個數)、向量(隻能包含正整數)和​

​:​

​(表示全部)。

A = [1  2  3  4
   5  6  7  8
   9 10 11 12];

A(2,2)  % 第2行第2列,即元素6
A(3,[2,4])  % 第3行第2和第4列,即[10 12]
A(1:3,3)  % 第3列第1行至第4行,即[3;7;11]
A(3,:)  % 第3行所有元素,即[9 10 11 12]
A(:,4)  % 第4列所有元素,即[4;8;12]      

矩陣變形

  • 變換次元:通過函數​

    ​reshape(X,m,n)​

    ​實作:将中的資料按列取出,再根據指定的次元,從左至右按列填充
t = 1:12;
A = reshape(t, 2, 6)
% A =
%      1     3     5     7     9    11
%      2     4     6     8    10    12

B = reshape(A, 4, 3)
% B =
%      1     5     9
%      2     6    10
%      3     7    11
%      4     8    12      

也可以僅指定一個次元,讓函數自适應另一個次元的大小

C = reshape(B, 3, []);  % 重構為3*4的矩陣
D = reshape(C, [], 2);  % 重構為6*2的矩陣      
  • 旋轉與翻轉
函數 說明

​rot90(X)​

​​ ​

​rot90(X,k)​

将矩陣逆時針方向旋轉

​fliplr(X)​

将矩陣左右翻轉

​flipud(X)​

将矩陣上下翻轉

​flipdim(X,dim)​

​dim=1​

​​時對行翻轉,​

​dim=2​

​時對列翻轉

三角陣/對角陣的抽取

提取對角線/用對角線構造對角陣

v = 1:3;
A = diag(v)  % 生成以向量v為對角線的對角陣
%      1     0     0
% A =  0     2     0
%      0     0     3

v = diag(A)  % 提取矩陣A的對角線,生成列向量
%      1
% v =  2
%      3

A = diag(v,2)  % 生成以向量v為主對角線上第2條對角線的對角陣
%      0     0     1     0     0
%      0     0     0     2     0
% A =  0     0     0     0     3
%      0     0     0     0     0
%      0     0     0     0     0

v = diag(A,2)  % 提取主對角線上第2條對角線,生成列向
%      1
% v =  2
%      3      

提取上/下三角陣

A = ones(3);
tril(A)  % 提取下三角陣
%      1     0     0
%      1     1     0
%      1     1     1

tril(A,1)  % 從主對角線上第一條對角線開始提取下三角陣
%      1     1     0
%      1     1     1
%      1     1     1

triu(A)  % 提取上三角陣
%      1     1     1
%      0     1     1
%      0     0     1

triu(A,-1)  % 從主對角線下第一條對角線開始提取上三角陣
%      1     1     1
%      1     1     1
%      0     1     1      

幾個函數雖然功能不同,但第二個參數中對角線的定位規則一緻,正數代表主對角線上的對角線,負數代表下面的對角線,提取時取閉區間。

矩陣運算

加減運算

要求進行運算的矩陣形狀一緻,計算時對應位置相加減即可,有交換律和結合律。

乘運算

若有三個矩陣,則對矩陣中的任意一個元素,有

其中矩陣的列數(第二次元)需要等于矩陣的行數(第一次元)。

矩陣乘運算不滿足交換律。

點乘運算

兩個形狀一緻的矩陣,對應位相乘,得到一個形狀不變的矩陣。

除法運算 - 左除

線性方程組,若非奇異,即它的逆矩陣存在,則可解出​​

​X=inv(D)*B=D\B​

條件:的階數等于的行數。(非奇異表明是方陣)

除法運算 - 右除

線性方程組,若非奇異,即它的逆矩陣存在,則可解出​​

​X=B*inv(D)=B/D​

條件:的列數等于的階數。

  • 除号偏向哪邊,哪邊要求非奇異
  • 使用除法運算解線性方程組比使用​

    ​inv​

    ​求逆的方法更迅速,且擁有更小的殘差

常用矩陣運算函數

函數 說明

​cond(A)​

傳回2-範數逆運算的條件數,即最大奇異值與最小奇異值之比

​condest(A)​

傳回 1-範數條件數的下限

​det(A)​

傳回矩陣的行列式(一個值)

​eig(A)​

傳回矩陣的特征值/特征向量

​inv(A)​

傳回矩陣的逆

​norm(A,p)​

傳回矩陣的範數,​

​p​

​​可以為​

​1​

​​ ​

​2​

​​ ​

​Inf​

​​ ​

​'fro'​

​​,不填預設為​

​2​

​normest(A)​

傳回矩陣的2-範數,相當于​

​norm(A,2)​

​rank(A)​

傳回矩陣的秩

​orth(A)​

矩陣的正交化運算,傳回适用于矩陣範圍的标準正交基,列數等于秩

​rcond(A)​

傳回1-範數的逆條件數

​trace(A)​

傳回矩陣對角線之和,即矩陣的迹

​expm(A)​

矩陣指數運算,每個元素變為

​logm(A)​

矩陣對數運算,每個元素變為

​sqrtm(A)​

矩陣開方運算,傳回使

​cdf2rdf​

将複數對角矩陣轉換成實數塊對角矩陣

​rsf2csf​

将實數塊對角矩陣轉換成複數對角矩陣

​rref​

将矩陣轉換成逐行遞減的階梯矩陣

​funm​

一般的矩陣函數

關于矩陣的條件數與“病态”:

矩陣的條件數用于刻畫矩陣的“病态”程度,定義為

它是一個不小于1的實數,當時,說矩陣是“病态”的,反之則是“良态”的。

s = svd(A);  % 傳回矩陣A的奇異值列向量s
[U,S,V] = svd(A);  % 傳回矩陣A的奇異值分解因子U、S和V      

繼續閱讀