1. 程式人生 > >Matlab學習筆記(持續更新)

Matlab學習筆記(持續更新)

矩陣

在matlab中矩陣是以陣列的形式存在的,一維陣列相當於 向量,二維陣列相當於矩陣,所以矩陣是陣列的子集

函式名稱 函式功能

ones(n)構建nXn的1矩陣, 矩陣的元素全部是1 ones(m,n)構建mXn的1矩陣 ones (size (A) )構建一 個和矩陣A同樣大小的1矩陣

zeros(n) 0矩陣 zeros (m, n) zeros(size (A) )

eye (n) 單位矩陣 eye (m,n) eye(size(A))

magic (n) 構建-個nXn的矩陣,其每一行每一列的元素之和都相等

rand (n)構建一個nXn的矩陣,其元素為0-1之間均勻分佈的隨機數 rand (m,n)構建 一個mXn的矩陣,其元素為0–1之間均勻分佈的隨機數

向量,標量和空矩陣

注:只有一行的矩陣稱為行向量,只有一列的矩陣成為列向量 向量 當m=1或n=1時,即1Xn或者 mX1矩陣,建立的矩陣稱為向量,m=1時稱為行向量,n=1稱為列向量 標量 當m=n=1時,建立的矩陣稱為標量,任意的1x1的矩陣形式可以表示的單個實數、複數都是標量 空矩陣 當m=n=0,或者m=0,或者n=0,即0x0,0xn,mx0時 ,建立的矩陣稱為空矩陣。空矩陣不是0矩陣

矩陣旋轉與改變維度的函式

函式名稱 函式功能

fliplr(A)矩形每一 行 均進行逆序排序flipud(A)矩陣每一列均進 行逆序排列

rot90(A)生成一個由矩陣A逆時針旋轉90度而得到的新矩陣

rot90(A,k)生產一個由矩陣A逆時針旋轉k*90度而得到的新矩陣

reshape(A,m,n)_生成一個mXn的矩陣,其元素以線性索引的順序從矩陣A中取得,A中元素個數必須為mXn個

reshape(A,[m n …]建立一個和矩陣A有相同元素的mXn…Xp多維元素

shiftdim(A,n)矩陣的列移動n步,n為正數,矩陣向左移動,n為負數,向右移動

squeeze(A)返 回沒有空維的矩陣A

cat(dim,A,B)將矩陣組合A和B組合成一個dim維 的多維矩陣

permute(A,order)根據向量order來改變矩陣A中的維書順序

ipermute(A,order)根據命令permute的逆變換

sort (A)對一維矩陣或二維矩陣進行升序排序,並返回升序後的矩陣,當A是二維矩陣時,對矩陣的每一列分別進行排序

sort (A,dim) dim=1時, 對列進行排序,當dim=2時, 對行進行排序

sort (A, dim, mode) mode為ascend時, 升序排序,mode為descend時,降序排序

[B,IX]=srt(A… IX為排序後備元素在元矩陣中的行位置或列位置的索引

矩陣行列的刪除

要刪除矩陣的某一行或者某一 列, 只要把該行或者列賦予一個空矩陣"[ ]"就可以。

A=rand(3) %產生3x3的隨機矩陣 A= 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575

A(2,;)=[] % 其中:的意思是第二行所有列 A= 0.8147 0.9134 0.2785 0.1270 0.0975 0.9575

A=[1,2,3;4 5 6] A= 1 2 3 4 5 6

B=[1;2] B= 1 2

C=[AB] C= 1 2 3 1 4 5 6 2

D=[1 2 3] D= 1 2 3

E=[A;D] E= 1 2 3 4 5 6 1 2 3

重構矩陣

矩陣重構的兩個比較重要的運算是轉置和共軛轉置C=C’

A=rand(3) A= 0.9649 0.9572 0.1419 0.1576 0.4854 0.4218 0.9706 0.8003 0.9157

A’ans= 0.9649 0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157

**

矩陣下標的引用

** 在MATLAB中,普通一維陣列的數字索引分為雙下標索引和單下標索引。雙下標索引是通過一個二元陣列對來對應元素在矩陣中的行列位置。例如A(2,3)表示矩陣A中第2行第3列的元素。單下標索引的方式採用列元素優先的原則,對m行n列的矩陣按列元素進行重組,組成一維陣列, 再取新的一維陣列中的元素位置對應的值作為元素在原矩陣中的單下標,例如對4X4的矩陣,A(7)表示矩陣A中的第3行第2列的元素,而A(1,3)表示矩陣A中第一行, 第四列的元素 常用的矩陣索引表示式

索引表示式 ,函式功能( 有“,”就是雙下標索引,沒有就是單下表索引 )

A(1) 將二維矩陣A重組為一維陣列, 返回陣列中的第一個元素

A(:,j) 返回 二維矩陣A中第j列列向量

A(i,:) 返回二維矩陣A中第i行行向量

A(:,j:k) 返回二維矩陣A中的第j列到第k列列向量組成的子矩陣(j:1:k)

A(i:k,:) 返回二維矩陣A中第i行到第k行行向量組成的矩陣

A(i:k,j:D) 返回二維矩陣A中第i行到第k行行向量,和第列到第列列向量的交集組成的子矩陣

A(: )將矩陣A中的每列合併成個長的列向量

A(j:k) 返回一個行向量,其元素為A (: )中的第j個元素到第k個元素

A([j1 j2 j3…]) 返回一個行向量,其中的元素為A (: )中的第j1,j2, j3…個元素

A(:,[j1 j2…])返回矩陣A中第j1, j2…列的列向量

A([i1 i2…],:)返回矩陣A中的第i1行,i2行…的行向量

A([i1i2 …],[j1j2…]返回矩陣第i1行, 第i2行…和第j1列,第j2列…的元素

MATLAB中提供了一個關鍵字end,用來表示該維中的最後一個元素。

A=[1 2;3 4] A= 1 2 3 4

A(1,end) %第1行最後1列 ans = 2

單下標和雙下標索引值的轉換

矩陣中某一元素的單 下標索引值和雙下標索引值之間,可以通過MATLAB內部函式進行轉換,語法格式為:IND=sub2ind(siz,i,j) 其功能是將雙下標索引值轉換為單下標索引值,其中siz是一個包含兩個元素的陣列,一般直接用size(A)表示,i與j是雙下標索引中的行、列的值,IND是轉換後的單下標索引值 [I J]=ind2sub(siz,ind) 其功能是將單下標索引值轉換為雙下標索引值。

**

矩陣的運算

** 矩陣的加、減、乘、除、比較運算和邏輯運算等代數運算是MATLAB數值計算最基礎的部分。

進行矩陣加法,減法運算的前提是參與運算的兩個矩陣或多個矩陣必須具有相同的行數和列數,或者其中一個或多個矩陣是標量

兩個矩陣的乘法必須滿足被乘矩陣的列數與乘矩陣的行數相等,設矩陣A為mXh矩陣,B為hXn矩陣,則兩矩陣的乘積C=AxB。矩陣之間的乘法不遵循交換律。

矩陣的除法是乘法的逆運算,分為左除和右除兩種,分別用運算子號“\”和“/”表示。如果矩陣A和矩陣B是標量。那麼A/B和A\B是等價的。對於一般二維矩陣A和B,當進行A\B運算時,要求A的行數與B的行數相等;當A/B時,要求A的列數與B的列數相等。

當矩陣A為方陣時,可進行矩陣的冪運算。用符號"^"表示冪運算

矩陣元素的求和

MATLAB中函式sum ()的作用是對矩陣的元素求和,語法格式如下

B=sum (A),該函式對矩陣A的元素求和,返回由矩陣A各列元素的和組成的向量。

B=sum(A,dim)該函式返回在給定的維數dim上元素的和,dim=1時,計算矩陣A各列元素的和,dim=2時,計算矩陣A各行元素的和

矩陣元素的查詢

MatLab中函式find ()的作用是進行矩陣元素的查詢,它通常與關係函式和邏輯函式相結合。(可在find函式括號中加入查詢條件 比如 find(X>1) )(find返回的是非零元素位置)

ind=find(X) :該函式查詢矩陣X中的非零元素,函式返回這些元素的單下標

[I,J]=find(X):該函式查詢矩陣X中的非零元素,函式返回這些元素的雙下標i和j

2018.10.4