1. 程式人生 > 其它 >建立無大小的空矩陣_Matlab入門教程 第 1 章 Matlab基礎知識之矩陣的使用

建立無大小的空矩陣_Matlab入門教程 第 1 章 Matlab基礎知識之矩陣的使用

技術標籤:建立無大小的空矩陣

1.4 Matlab 矩陣的表示

1.4.1 矩陣的建立

  • 方法一:直接輸入法建立矩陣——將矩陣的元素用中括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用逗號空格分隔,不同行的元素之間用分號分隔。
>>A=[1,2,3;4,5,6;7,8,9]

A=

123
456
789
  • 方法二:利用已經建好的矩陣建立更大的矩陣:一個大矩陣可以由已經建立好的小矩陣拼接而成。
>>A=[1,2,3;4,5,6;7,8,9];
>>B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];
>>C=[A,B;B,A]

C=

123-1-2-3
456-4-5-6
789-7-8-9
-1-2-3123
-4-5-6456
-7-8-9789
  • 方法三:用實部矩陣和虛部矩陣構成複數矩陣。
>>B=[1,2,3;4,5,6];
>>C=[6,7,8;9,10,11];
>>A=B+i*C

A=

1.0000+6.0000i2.0000+7.0000i3.0000+8.0000i
4.0000+9.0000i5.0000+10.0000i6.0000+11.0000i

1.4.2 冒號表示式

格式:e1:e2:e3,其中 e1 為初始值,e2 為步長,e3 為終止值。

舉例:

>>t=0:1:5

t=

012345

? 注意點:省略步長 e2,則步長為 1。例如,t=0:5 與 t=0:1:5 等價。

還可以通過 linspace

函式產生行向量,呼叫格式為:linspace(a,b,n)。其中,a 為第一個元素,b 是生成向量的最後一個元素,n 是元素總數。「當 n 省略時,自動產生 100 個元素。」

>>x=linspace(0,pi,6)

x=

00.62831.25661.88502.51333.1416

1.4.3 結構矩陣和單元矩陣

① 結構矩陣

格式為:結構矩陣元素.成員名=表示式

舉例:建立含有 3 個元素的矩陣 a,每個元素都有結構資料,包含 3 個成員,但是不同資料型別,「給每個元素的每個成員賦值」

>>a(1).x1=10;a(1).x2='liu';a(1).x3=[11,21;34,78];
>>a(2).x1=12;a(2).x2='wu';a(2).x3=[34,191;27,578];
>>a(3).x1=14;a(3).x2='cai';a(3).x3=[13,890;67,231];
7e3d59439663f9fd63298bf5c00e8a02.png
結構矩陣資料

② 單元矩陣

建立單元矩陣和一般矩陣相似,直接輸入就可以了,只是單元矩陣元素用大括號括起來。

>>b={10,'liu',[11,21,34,78];12,'wu',[34,191,27,578];14,'cai',[13,890,67,231]}

b=

3×3cell陣列

{[10]}{'liu'}{1×4double}
{[12]}{'wu'}{1×4double}
{[14]}{'cai'}{1×4double}

1.5 矩陣元素的引用

1.5.1 矩陣元素的引用方式

  • 方法一:通過下標來引用矩陣的元素

A(3,2)表示 A 矩陣第 3 行第 2 列的元素。

>>A=[1,2,3;4,5,6];%直接輸入法建立矩陣A
>>A(4,5)=10%將10賦值給A(4,5)

A=

12300
45600
00000
000010
  • 方法二:通過序號來引用

    • 在 Matlab 中,矩陣元素按列儲存,即首先儲存矩陣的第一列元素,然後儲存第二列元素,...,一直到矩陣的最後一列元素。

    • 矩陣元素的序號就是矩陣元素在記憶體中的排列順序。

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

      A=

      123
      456

      >>A(3)

      ans=

      2
    • 「序號與下標是一一對應的,以 m✖️n 矩陣 A 為例,矩陣元素 A(i,j) 的序號為 (j-1)✖️m+i」

    • 矩陣元素的序號與下標可以利用 sub2indind2sub 函式實現相互轉換。

      「sub2ind 函式」:將矩陣中指定元素的行、列下標轉換成儲存的序號。呼叫格式為:D=sub2ind(S,I,J)其中,S 是行數和列陣列成的向量,I 是轉換矩陣元素的行下標,J 是轉換矩陣元素的列下標。

      >>A=[1:3;4:6]

      A=

      123
      456

      >>D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])

      D=

      12
      64

      「ind2sub 函式」:將把矩陣元素的序號轉換成對應的下標,其呼叫格式為:[I,J]=ind2sub(S,D),其中,S 是行數和列陣列成的向量,D 是序號,I 是行下標,J 是列下標。

      >>[I,J]=ind2sub([3,3],[1,3,5])

      I=

      132


      J=

      112

1.5.2 利用冒號表示式獲得子矩陣

子矩陣是指由矩陣中的一部分元素構成的矩陣。

冒號表示式釋義
A(i,:)第 i 行的全部元素
A(:,j)第 j 列的全部元素
A(i:i+m,k:k+m)第 i~i+m 行內且在第 k~k+m 列中的所有元素
A(i:i+m,:)第 i~i+m 行第全部元素

舉例:

>>A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]

A=

12345
678910
1112131415

>>A(1:2,:)

ans=

12345
678910

>>A(2:3,1:2:5)

ans=

6810
111315

1.5.3 利用 end 運算子獲得子矩陣

「end 運算子」:表示某一維的末尾元素下標。

舉例:

>>A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
>>A(end,:)%最後一行矩陣元素

ans=

1617181920
>>A([1,4],3:end)%從第一行到第四行,獲取第三列到最後的元素

ans=

345
181920

1.5.4 利用空矩陣刪除矩陣的元素

「空矩陣」:無元素的矩陣

>>x=[]

x=

[]

A(:,[2,4]) = []是將 2~4 列元素置空,即刪除

1.5.5 改變矩陣的形狀

reshape(A,m,n):在矩陣 A 總元素保持不變的前提下,將 A 重新排成 m✖️n 的二維矩陣。

? 注意點:reshape 函式只是改變原矩陣的行數和列數,但並不改變原矩陣元素個數及其儲存順序。

>>x=[23,45,65,34,65,34,98,45,78,65,43,76];
>>y=reshape(x,3,4)

y=

23349865
45654543
65347876

A(:):將矩陣 A 的每一列元素堆疊起來,成為一個列向量。

「A(:) 等價於 reshape(A,6,1)」