建立無大小的空矩陣_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];
② 單元矩陣
建立單元矩陣和一般矩陣相似,直接輸入就可以了,只是單元矩陣元素用大括號
括起來。
>>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」。
矩陣元素的序號與下標可以利用
sub2ind
和ind2sub
函式實現相互轉換。「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)」