MATLAB編程與應用系列-第2章 數組及矩陣的創建及操作(4)

本系列教程來源於出版設計《基於MATLAB編程基礎與典型應用書籍》,如涉及版權問題,請聯繫:[email protected]。 出版社:人民郵電出版社, 頁數:525。

本系列教程目前基於MATLABR2006a,可能對於更高級版本的功能和函數有差異,教程中如有問題,請聯繫:[email protected]

2.3 多維數組

###2.3.1 多維數組的創建
在MATLAB中創建和使用一維和兩維數組十分靈活,同樣MATLAB也提供了靈活多樣的創建多維數組的方法,使得用戶可以根據自己所創建多維數組的特徵選取不同的創建方法。其中最常用的創建方法有:第一通過“全下標”元素賦值方式創建多維數組;第二由函數ones、zeros、rand和randn直接創建多維數組;第三藉助構造函數創建多維數組。下面通過示例講解如何使用不同的方法創建多維數組。

(1)通過“全下標”元素賦值方式創建多維數組

【例2.15】“全下標”方式創建多維數組
在MATLAB命令行窗口中輸入以下命令,創建一個二維的四階魔方陣:
>> A=magic(4) %生成一個二維的四階魔方陣
以矩陣A爲基礎,通過直接定義數組的第三維的方式,創建一個三維數組。在命令窗口中輸入:
>> A(:,:,2)=rand(4) %四階的隨機陣
上述語句的執行結果如下所示。
A(:,:,1) =<br/>16 2 3 13<br/>5 11 10 8<br/>9 7 6 12<br/>4 14 15 1
A(:,:,2) =<br/>0.4451 0.8462 0.8381 0.8318<br/>0.9318 0.5252 0.0196 0.5028<br/>0.4660 0.2026 0.6813 0.7095<br/>0.4186 0.6721 0.3795 0.4289

(2)由函數ones、zeros、rand和randn直接創建多維數組
前面介紹到了使用函數ones、zeros、rand和randn可以直接生成二維數組,除了生成二維數組的功能外,這些函數還可以生成多維數組。

【例2.16】用函數ones、zeros、rand和randn直接創建三維隨機數組
&gt;&gt; A=rand(4,5,3) %創建三維隨機數組
&gt;&gt; B=ones(4,2,6) %創建三維的單位矩陣
&gt;&gt; C=zeros(4,6,8); %創建三維的零值矩陣

(3)藉助構造函數創建多維數組
多維數組的構造函數很多,如cat、repmat、reshape等,在這裏主要介紹幾個常用的構造函數。表2.5所示爲使用cat, repmat和reshape函數構造多維數組的函數調用格式和函數描述。
函數名 調用格式 函數描述
Cat A=cat(n,A1,A2,…,Am) n=1和n=2時分別構造[A1;A2]和[A1,A2],它們都是二維數組,而n=3時可以構造出三維數組
repmat repmat(p,行 列 頁 ……) 第一個輸入變量p是用來放置的模塊數組,後面的變量是要放置指定的維數。
reshape reshape(p,行 列 頁 ……) 第一個變量是待重組的數組p,後面的變量是重新生成數組的行數、列數、頁數等。

【例2.17】構造函數cat、repmat、reshape創建多維數組
首先生成構造函數使用的兩個矩陣A和B,具體如下:
&gt;&gt; A=rand(4) %二維數組A
&gt;&gt; B=rand(4) %二維數組B
以下使用cat函數生成一個新的二維數組n=2,在命令窗口中輸入:
&gt;&gt; C=cat(2,A,B)
使用cat函數生成一個新的三維數組n=3,在命令窗口中輸入:
&gt;&gt; D=cat(3,A,B)

注意:使用reshape函數時要注意新生成的矩陣元素數量不變,否則無法生成。

###2.3.2 多維數組的標識
MATLAB中提供了許多指令可以用來判斷數組的維數和大小等操作的函數,給用戶使用數組帶來很大的方便,尤其是在使用多維數組的情況下,可以方便的查看多維數組的一些信息。如表2.5所示,列出了幾個常用的函數。
函數名 功能
ndims (P) 返回數組P的維數
[m,n,…]=size(P) 返回數組P各維的大小
m=size(P,x) 返回數組P某一維的大小
length(P) 返回數組P的行數或列數的最大值
max(size(P)) 返回數組P的行數或列數的最大值,與length(P)的功能相同

【例2.18】以三維數組A爲例,查看矩陣的維數、各維大小以及所有維中最大長度。
&gt;&gt; A=rand(4,5,2) %生成三維均勻分佈的隨機數組A
①使用ndims函數查看數組A維數,在命令窗口中輸入:
&gt;&gt; ndims(A)
返回數組A的維數顯示如下:
ans = 3
②使用size函數查看數組A中各維的大小,在命令窗口中輸入:
&gt;&gt; size(A) %查看數組A中各維的大小
返回數組A中各維的大小顯示如下:
ans = 4 5 2
③使用length函數查看數組A各維中的最大長度,在命令窗口中輸入:
&gt;&gt; length(A)
返回數組A各維中的最大長度顯示如下:
ans = 5

作者:德特數據
聯繫方式:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章