《MATLAB從入門到放棄》打通 “矩陣” 障礙


 目錄:

 »   矩陣的生成與大小     

 >   簡單矩陣的生成

 >   隨機矩陣的生成

 >   矩陣的大小

 »  矩陣的索引與訪問

 »  矩陣的拼接與裁剪

 >  矩陣的拼接

 >  矩陣的裁剪

 »  矩陣的運算與操作

 >  矩陣的算術運算

 >  矩陣的翻轉


 

 

矩陣的生成與大小

簡單矩陣的生成

A = [1 2; 3 5; 8 5; 4 6] 空格/逗號表示一列一列,分號/換行表示一行一行
B = 1:2:9 從1到9,每隔2個取一個整數,即1,3,5,7,9  (2可以是整數/小數) 。2不寫,默認1
C = zeros (5,6) 5*6全0矩陣
D = ones(5,6) 生成5*6的全1矩陣
E = linspace (4,12,6) 生成4~12之間5個等分的數(小數/整數)。6不寫,默認100
F = logspace(1,3,5) 生成5個[10^1 , 10^3]之間的數。5不寫,默認50
G = eye(5,6) 生成5行6列對角線是1,其他是0的矩陣 。  
 

 

 

 

 

 

 

隨機矩陣的生成 

A = rand(5,6) 生成[0,1]范圍內的5*6的隨機小數矩陣
B= rand 只產生一個[0,1]范圍內的隨機小數矩陣
C=m+(n-m)*rand(a, b) 在[m,n]范圍內生成a行b列小數矩陣
D= randi(m,a) 生成[1,m]范圍內的a*a整數矩陣
E = randi(a)  生成一個[1,a]之間的整數
F = randi([-5,5],10,1) 生成[-5,5]范圍內的10*1的整數矩陣
 
 

 

 

 

 

矩陣大小

d = size(A) d=x y   x是A的行數,y是A的列數 。三維數組也適合
[m,n] = size(A)  m是A的行數,n是A的列數
d = length(A) 返回矩陣A維度最大的維度數
d = numel(A) 返回矩陣中元素的總個數,行數 * 列數
 
 
 

 

 

 

 

 

矩陣的索引與訪問

 

@注意: 下標從1開始

 
A(m,n) 訪問A的m行n列
A(m) 訪問A的某個元素,按列
A(m:n) 訪問A的m~n的數據塊,按列
A(m:a:n) 在m~n的范圍內,每隔a個數訪問,按列
A([a,b,c..]) 直接訪問第a,b,c ..個數據
A(a,:) / A(:,a) a行所有數據 / a列所有數據
C = A([1,3],[4,2])
取第1行,第三行,第4列,第2列組合的矩陣
並且第4列為第一列
C= A(1:3:9,2:3:9) 取1,4,7行(1~9,每隔3),列也是如此
A(:,[a,b]) 第a列和第b列的所有元素
A(a:b,[c,d])  a~b行和c列d列元素
A(find(B)) A和B是大小相同的矩陣,如果B的當前位置元素為非0,則取A中當前位置的元素
d = sub2ind(size(A),m,n) d的值是A矩陣m行,n列對應的單下標索引
[m,n] = ind2sub(size(A),d) A矩陣單下標d轉換成雙下標的m行,n列

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

矩陣的拼接與裁剪

 

矩陣拼接

C = cat(標識A,B)
A和B根據標識組合起來,得到新矩陣C
標識:1-各個矩陣豎着疊在一起(列數必須一樣) 
          2-各個矩陣橫着連在一起(行數必須一樣) 
C=vertcat(A,B)

兩個矩陣豎着疊在一起,相當於cat標識為1的情況 。(列數必須一樣)

C = horzcat(A,B)            

兩個矩陣橫着連在一起,相當於cat標識為2的情況 。(行數數必須一樣)

C=repmat(A,3,2)

矩陣A為一個塊,以塊為基本單位拼成3行個塊,2列個塊的新矩陣

C=blkdiag(A,B)

對角線拼接矩陣

C=kron(A,B)   

紅框行數和列數與A相同,每個紅框里面的矩陣行數和列數與B相同,每個紅框矩陣的元素是這個紅框代表的元素(第一個紅框是A中的0元素,第二個紅框是A中的1元素....)*B中所有元素 

索引擴展

以最小的代價把超過索引的點(矩陣外的一個點)包含進來

 A =
A(2,4)=9, A=
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

矩陣裁剪

A(1:3,:)=[] 第1~3行所有列為空,也就是刪除第1~3行

 

  

矩陣的運算與操作

矩陣算術運算

A' 矩陣轉置
用函數transpose(A)也可以
用  .'  也是可以的
用ctranspose(A)也是可以的
inv(A) A的逆矩陣  
A*10 矩陣每個元素*10 ,同樣適應於 + - * /  
A+B 、A-B、 A*B 、A/B、 A\B
參考數學中兩個矩陣的運算
A/B: A*inv(B)
A\B:inv(A)*B
 
A.*B、A./B(A除以B)、A.\B(B除以A) 兩個矩陣對應位置上的元素進行計算  
A.^B、 A.^2、2.^A 對應位上元素進行計算  
trace(A)   矩陣的跡,等於矩陣對角線元素的和,矩陣的特征值之和  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

矩陣翻轉

flipud(A)
矩陣 上下翻轉,默認中心軸為中間的那一行
共有偶數行的話直接翻轉,奇數行的話中間一行不動
fliplr(A) 矩陣 左右翻轉
rot90(A,k) A按照逆時針旋轉90*k度,k默認為1
 
 

 

 

 

 

 

 

reshape(A,a,b) 把A調整成a行,b列 。 A的大小始終為a*b, 單下標索引調整前后不能變 
             
 
 

 


免責聲明!

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



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