第2章 數(shù)組
本章包括
◆ 創(chuàng)建數(shù)值數(shù)組
◆ 操作數(shù)值數(shù)組
數(shù)組是MATLAB的基礎(chǔ)內(nèi)容,幾乎所有的數(shù)據(jù)都是用數(shù)組的形式進行儲存的,因此,MATLAB又被稱為矩陣實驗室。從MATLAB 5.x版本開始,基于面向?qū)ο蟮目紤],這些數(shù)組就成為MATLAB中的內(nèi)建數(shù)據(jù)類型(BuiIt-in Data Type),而數(shù)組運算就是定義這些數(shù)據(jù)結(jié)構(gòu)的方法。在本章中,將介紹關(guān)于數(shù)組類型和數(shù)組運算的內(nèi)容。
2.1 創(chuàng)建數(shù)值數(shù)組
創(chuàng)建數(shù)組是所有MATLAB運算和操作的基礎(chǔ),針對不同維度的數(shù)組,MATLAB提供了多種創(chuàng)建方法,分別可以創(chuàng)建不同要求的數(shù)組類型。在本節(jié)中,將分別根據(jù)數(shù)組維度以及方法的不同來介紹如何創(chuàng)建數(shù)組。
2.1.1 一維數(shù)組的創(chuàng)建方法
在MATLAB中,一維和二維數(shù)組都被認為是比較低維的數(shù)組。它們的創(chuàng)建方法比較簡單,同時,也是創(chuàng)建高維數(shù)組的基礎(chǔ)條件,下面將以簡單的例子來說明如何在MATLAB中創(chuàng)建各種不同的數(shù)組類型。
例2.1 在MATLAB中,使用不同的方法來創(chuàng)建一維數(shù)組。
step 1 在MATLAB的命令窗口中輸入下面的程序代碼:
>> data1=[pi;log(5);7+6;2^3]; >> data2=[pi log(5) 7+6 2^3]; >> data3=2:2:10; >> data4=2:10; >> data5=linspace(2,10,5); >> data6=logspace(1,5,10);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到以下結(jié)果:
data1 = 3.1416 1.6094 13.0000 8.0000 data2 = 3.1416 1.6094 13.0000 8.0000 data3 = 2 4 6 8 10 data4 = 2 3 4 5 6 7 8 9 10 data5 = 2 4 6 8 10 data6 = 1.0e+005 * 0.0001 0.0003 0.0008 0.0022 0.0060 0.0167 0.0464 0.1292 0.3594 1.0000
上面的結(jié)果基本演示了在MATLAB中創(chuàng)建一維數(shù)組的方法。
◆ 直接輸入法:在上面的程序代碼中,data1和data2就是直接輸入法。其中data1在輸入數(shù)據(jù)的時候,使用了分號,創(chuàng)建了一維列數(shù)組;data2則在創(chuàng)建過程中使用了空格,因此創(chuàng)建了一維行數(shù)組。
◆ 步長生成法:在上面的程序代碼中,data3和data4的創(chuàng)建方法就是步長生成法,其通用方法是a:inc:b,其中a表示的是數(shù)組的第一個元素,inc是創(chuàng)建數(shù)組之間的間隔,也就是步長,b則是數(shù)組中的最后一個元素。其中inc可以省略,默認的數(shù)值為1。
◆ 定數(shù)線性采樣法:在上面的程序代碼中,data5的創(chuàng)建方法就是定數(shù)線性采樣方法,該方法在設(shè)定“總個數(shù)”的條件下,均勻采樣分布生成一維行數(shù)組,這種方法的調(diào)用格式為:x=Iinspace(a,b,n),其中a和b分別是數(shù)組的第一個和最后一個元素,n表示的是采樣點數(shù)。
◆ 定數(shù)對數(shù)采樣法:在上面的程序代碼中,data6的創(chuàng)建方法就是定數(shù)對數(shù)采樣法。這種方法在設(shè)定“總個數(shù)”的條件下,經(jīng)過“常用對數(shù)”采樣生成一維行數(shù)組。這種方法的調(diào)用格式為x=Iogspace(a,b,n)。
說明
在步長生成法中,步長參數(shù)inc的數(shù)值可以是正數(shù),也可以是負數(shù),當(dāng)inc是正數(shù)的時候,必須滿足a<b;當(dāng)inc是負數(shù)的時候,必須滿足a>b。
2.1.2 二維數(shù)組的創(chuàng)建方法
在本節(jié)中將介紹如何在MATLAB中創(chuàng)建二維數(shù)組。
例2.2 在MATLAB中創(chuàng)建二維數(shù)組。
step 1 在MATLAB的命令窗口中輸入下面的程序代碼:
>> Data1= [1 2 3 4 5 6 7 8 9]; >> Data2=[1,2,3;4,5,6;7,8,9];
step 2 查看程序結(jié)果。在命令窗口輸入變量名稱,可以得到下面的程序結(jié)果:
Data1 = 1 2 3 4 5 6 7 8 9 Data2 = 1 2 3 4 5 6 7 8 9
上面的例子基本演示了在MATLAB中創(chuàng)建二維數(shù)組的方法,Data1的創(chuàng)建方法比較直接,得到的結(jié)果就是輸入的結(jié)果;Data2的創(chuàng)建方法則是更加普遍的方法,關(guān)于該方法需要注意下面的內(nèi)容:
◆ 整個輸入數(shù)組必須以方括號“[]”作為創(chuàng)建的首尾。
◆ 數(shù)組的行和行之間必須用分號“;”間隔。
◆ 數(shù)組的列和列之間必須用逗號“,”間隔。
提示
上面使用的創(chuàng)建方法適用的范圍比較窄,當(dāng)數(shù)組的行或者列數(shù)比較大的時候,該創(chuàng)建方法就會顯得比較煩瑣,至于其他方法將在后面章節(jié)中加以介紹。
2.1.3 使用下標(biāo)創(chuàng)建三維數(shù)組
在MATLAB中,習(xí)慣將二維數(shù)組的第一維稱為“行”,第二維稱為“列”,而對于三維數(shù)組,其第三維則習(xí)慣性地稱為“頁”。在MATLAB中,將三維或者三維以上的數(shù)組統(tǒng)稱為高維數(shù)組。由于高維數(shù)組的形象思維比較困難,在本節(jié)中將主要以三維為例來介紹如何創(chuàng)建高維數(shù)組。
例2.3 使用下標(biāo)引用的方法創(chuàng)建三維數(shù)組。
step 1 在MATLAB的命令窗口中輸入下面的程序代碼:
A(2,2,2)=1; >> for i=1:2 for j=1:2 for k=1:2 A(i,j,k)=i+j+k; end end end
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到下面的程序結(jié)果:
>> A(:,:,1) 3 4 4 5 >> A(:,:,2) 4 5 5 6
step 3 創(chuàng)建新的高維數(shù)組。在MATLAB的命令窗口中輸入下面的程序代碼:
>> B(3,4,:)=2:5;
step 4 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到下面的程序結(jié)果:
>> B(:,:,1) 0 0 0 0 0 0 0 0 0 0 0 2 >> B(:,:,2) 0 0 0 0 0 0 0 0 0 0 0 3 >> B(:,:,3) 0 0 0 0 0 0 0 0 0 0 0 4 >> B(:,:,4) 0 0 0 0 0 0 0 0 0 0 0 5
說明
從結(jié)果中可以看出,當(dāng)使用下標(biāo)的方法創(chuàng)建高維數(shù)組的時候,需要使用各自對應(yīng)的維度的數(shù)值,沒有指定的數(shù)值則在默認情況下為0。
2.1.4 使用低維數(shù)組創(chuàng)建三維數(shù)組
本節(jié)將介紹如何在MATLAB中使用低維數(shù)組創(chuàng)建三維數(shù)組。
例2.4 使用低維數(shù)組創(chuàng)建高維數(shù)組。
step 1 在MATLAB的命令窗口中輸入下面的程序代碼:
>> D2=[1,2,3;4,5,6;7,8,9]; >> D3(:,:,1)=D2; >> D3(:,:,2)=2*D2; >> D3(:,:,3)=3*D2;d
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到以下結(jié)果:
>>D2 D2 = 1 2 3 4 5 6 7 8 9 >> D3 D3(:,:,1) = 1 2 3 4 5 6 7 8 9 D3(:,:,2) = 2 4 6 8 10 12 14 16 18 D3(:,:,3) = 3 6 9 12 15 18 21 24 27
提示
從結(jié)果中可以看出,由于三維數(shù)組中“包含”了二維數(shù)組,因此可以通過二維數(shù)組來創(chuàng)建各種三維數(shù)組。
2.1.5 使用創(chuàng)建函數(shù)創(chuàng)建三維數(shù)組
本節(jié)將介紹如何利用MATLAB的創(chuàng)建函數(shù)來創(chuàng)建三維數(shù)組。
例2.5 使用函數(shù)命令來創(chuàng)建高維數(shù)組。
step 1 使用cat命令來創(chuàng)建高維數(shù)組。在MATLAB的命令窗口中輸入下面的程序代碼:
>> D2=[1,2,3;4,5,6;7,8,9]; >> C=cat(3,D2,2*D2,3*D2);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到以下結(jié)果:
C(:,:,1) = 1 2 3 4 5 6 7 8 9 C(:,:,2) = 2 4 6 8 10 12 14 16 18 C(:,:,3) = 3 6 9 12 15 18 21 24 27
說明
cat命令的功能是連接數(shù)組,其調(diào)用格式為C = cat(dim,A1,A2,A3,A4...),其中,dim表示的是創(chuàng)建數(shù)組的維度,A1,A2,A3,A4表示的是各維度上的數(shù)組。
step 3 使用repmat命令來創(chuàng)建數(shù)組。在MATLAB的命令窗口中輸入下面的程序代碼:
>> D2=[1,2,3;4,5,6;7,8,9]; >> D3 = repmat(D2,2,3); >> D4=repmat(D2,[1 2 3]);
step 4 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到以下結(jié)果:
D2 = 1 2 3 4 5 6 7 8 9 D3 = 1 2 3 1 2 3 1 2 3 4 5 6 4 5 6 4 5 6 7 8 9 7 8 9 7 8 9 1 2 3 1 2 3 1 2 3 4 5 6 4 5 6 4 5 6 7 8 9 7 8 9 7 8 9 D4(:,:,1) = 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 D4(:,:,2) = 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 D4(:,:,3) = 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9
說明
repmat命令的功能在于復(fù)制并堆砌數(shù)組,其調(diào)用格式B = repmat(A,[m n p...])中,A表示的是復(fù)制的數(shù)組模塊,第二個輸入?yún)?shù)則表示該數(shù)組模塊在各個維度上的復(fù)制個數(shù)。
step 5 使用reshape命令來創(chuàng)建數(shù)組。在MATLAB的命令窗口中輸入以下代碼:
>> D2=[1,2,3,4;5,6,7,8;9,10,11,12]; >> D3=reshape(D2,2,2,3); >> D4=reshape(D2,2,3,2); >> D5=reshape(D2,3,2,2)
step 6 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> D2 D2 = 1 2 3 4 5 6 7 8 9 10 11 12 >> D3 D3(:,:,1) = 1 9 5 2 D3(:,:,2) = 6 3 10 7 D3(:,:,3) = 11 8 4 12 >> D4 D4(:,:,1) = 1 9 6 5 2 10 D4(:,:,2) = 3 11 8 7 4 12 >> D5 D5(:,:,1) = 1 2 5 6 9 10 D5(:,:,2) = 3 4 7 8 11 12
說明
reshape命令的功能在于修改數(shù)組的大小,因此可以將二維數(shù)組通過該命令修改為三維數(shù)組,其調(diào)用格式為B = reshape(A,[m n p ...]),其中A就是待重組的矩陣,后面的輸入?yún)?shù)則表示數(shù)組各維的維度。
2.1.6 創(chuàng)建低維標(biāo)準(zhǔn)數(shù)組
除了前面介紹的方法,MATLAB還提供了多種函數(shù)來生成一些標(biāo)準(zhǔn)數(shù)組,用戶可以直接使用這些命令來創(chuàng)建一些特殊的數(shù)組,下面將使用一些簡單的例子來說明如何創(chuàng)建標(biāo)準(zhǔn)數(shù)組。
例2.6 使用標(biāo)準(zhǔn)數(shù)組命令創(chuàng)建低維數(shù)組。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> A=zeros(3,2); >> B=ones(2,4); >> C=eye(4); >> D=magic(5); >> randn('state',0); >> E=randn(1,2); >> F=gallery(5);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
A = 0 0 0 0 0 0 B = 1 1 1 1 1 1 1 1 C = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 D = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 E = -0.4326 -1.6656 F = -9 11 -21 63 -252 70 -69 141 -421 1684 -575 575 -1149 3451 -13801 3891 -3891 7782 -23345 93365 1024 -1024 2048 -6144 24572
提示
并不是所有的標(biāo)準(zhǔn)函數(shù)命令都可以創(chuàng)建多種矩陣,例如eye、magic等命令就不能創(chuàng)建高維數(shù)組。同時,對于每個標(biāo)準(zhǔn)函數(shù),參數(shù)都有各自的要求,例如gallery命令中只能選擇3或者5。
2.1.7 創(chuàng)建高維標(biāo)準(zhǔn)數(shù)組
本節(jié)將介紹如何使用標(biāo)準(zhǔn)數(shù)組函數(shù)來創(chuàng)建高維標(biāo)準(zhǔn)數(shù)組。
例2.7 使用標(biāo)準(zhǔn)數(shù)組命令創(chuàng)建高維數(shù)組。
step 1 在MATLAB的命令窗口中輸入以下代碼:
%設(shè)置隨機數(shù)據(jù)器的初始條件 >> rand('state',1111); >> D1=randn(2,3,5); >> D2=ones(2,3,4);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> D1 D1(:,:,1) = 0.8156 1.2902 1.1908 0.7119 0.6686 -1.2025 D1(:,:,2) = -0.0198 -1.6041 -1.0565 -0.1567 0.2573 1.4151 D1(:,:,3) = -0.8051 0.2193 -2.1707 0.5287 -0.9219 -0.0592 D1(:,:,4) = -1.0106 0.5077 0.5913 0.6145 1.6924 -0.6436 D1(:,:,5) = 0.3803 -0.0195 0.0000 -1.0091 -0.0482 -0.3179 >> D2 D2(:,:,1) = 1 1 1 1 1 1 D2(:,:,2) = 1 1 1 1 1 1 D2(:,:,3) = 1 1 1 1 1 1 D2(:,:,4) = 1 1 1 1 1 1
說明
限于篇幅,在這里就不詳細介紹各種命令的參數(shù)和使用方法了,有需要的讀者請自行閱讀相應(yīng)的幫助文件。
2.2 操作數(shù)值數(shù)組
在MATLAB中,除了需要創(chuàng)建數(shù)組之外,還需要對數(shù)組進行各種操作,包括重組、元素變換、提取、旋轉(zhuǎn)等操作,MATLAB都提供了對應(yīng)的函數(shù)命令,本節(jié)中將以簡單的實例來說明這些命令的使用方法。由于數(shù)組維度的不同將會帶來MATLAB不同的操作要求,因此,將按不同的數(shù)組維度來討論數(shù)組的操作。
2.2.1 選取低維數(shù)組的對角元素
低維數(shù)組的操作比高維數(shù)組的操作在運算或者使用上要簡單,因此在本節(jié)中將首先使用實例來介紹如何操作低維數(shù)組。
例2.8 使用diag命令來選取對角元素或者創(chuàng)建矩陣。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> Data=[1,2,3,4;5,6,7,8;9,10,11,12]; A1=diag(Data,1);A2=diag(Data); A3=diag(Data,-1); B1=diag(A2,1); B2=diag(A3,1);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
Data = 1 2 3 4 5 6 7 8 9 10 11 12 A1 = 2 7 12 A2 = 1 6 11 A3 = 5 10 B1 = 0 1 0 0 0 0 6 0 0 0 0 11 0 0 0 0 B2 = 0 5 0 0 0 10 0 0 0
說明
從結(jié)果中可以看出,diag命令的功能可以是選取矩陣對角線的數(shù)組,也可以將某個數(shù)組創(chuàng)建矩陣,用戶可以很方便地利用該命令來處理矩陣對角線的數(shù)據(jù)。
對于diag命令中參數(shù)k的含義,可以用圖2.1來形象地說明。

圖2-1 diag命令中參數(shù)k的含義
2.2.2 低維數(shù)組的形式轉(zhuǎn)換
例2.9 對數(shù)組或者矩陣進行形式轉(zhuǎn)換:對稱變換和旋轉(zhuǎn)。
step 1 在MATLAB的命令窗口中輸入如下代碼:
>> Data=[1,2,3,4;5,6,7,8;9,10,11,12]; %矩陣的轉(zhuǎn)置 >> B=Data'; >> C=fliplr(Data); >> D=flipud(Data); %多次旋轉(zhuǎn)矩陣 >> E=rot90(Data); >> F=rot90(E); >> G=rot90(F); >> H=rot90(G);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
Data = 1 2 3 4 5 6 7 8 9 10 11 12 B = 1 5 9 2 6 10 3 7 11 4 8 12 C = 4 3 2 1 8 7 6 5 12 11 10 9 D = 9 10 11 12 5 6 7 8 1 2 3 4 E = 4 8 12 3 7 11 2 6 10 1 5 9 F = 12 11 10 9 8 7 6 5 4 3 2 1 G = 9 5 1 10 6 2 11 7 3 12 8 4 H = 1 2 3 4 5 6 7 8 9 10 11 12
這段代碼中演示了各種轉(zhuǎn)換命令,下面簡要介紹各種命令的含義。
◆ fIipIr:以數(shù)組的垂直中線為對稱軸,交換左右對稱位置上的數(shù)組元素。
◆ fIipud:以數(shù)組的水平中線為對稱軸,交換左右上下對稱位置上的數(shù)組元素。
◆ rot90:逆時針旋轉(zhuǎn)二維數(shù)組90°。
2.2.3 選取三角矩陣
例2.10 選取數(shù)組上三角或者下三角矩陣。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> Data=[1,2,3,4;5,6,7,8;9,10,11,12]; >> Al=tril(Data); >> Bl=tril(Data,1); >> Cl=tril(Data,2); >> Dl=tril(Data,-1); >> Dl=tril(Data,-2); >> Au=triu(Data); >>Bu=triu(Data,1); >>Cu=triu(Data,2); >>Du=triu(Data,-1); >>Eu=triu(Data,-2);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
Data = 1 2 3 4 5 6 7 8 9 10 11 12 Al = 1 0 0 0 5 6 0 0 9 10 11 0 Bl = 1 2 0 0 5 6 7 0 9 10 11 12 Cl = 1 2 3 0 5 6 7 8 9 10 11 12 Dl = 0 0 0 0 5 0 0 0 9 10 0 0 El = 0 0 0 0 0 0 0 0 9 0 0 0 Au = 1 2 3 4 0 6 7 8 0 0 11 12 Bu = 0 2 3 4 0 0 7 8 0 0 0 12 Cu = 0 0 3 4 0 0 0 8 0 0 0 0 Du = 1 2 3 4 5 6 7 8 0 10 11 12 Eu = 1 2 3 4 5 6 7 8 9 10 11 12
說明
在上面的步驟中,tril命令的功能是提取矩陣的下三角矩陣,triu命令的功能在于提取矩陣的上三角矩陣,兩個命令中的參數(shù)k的含義和diag命令相同。
2.2.4 Kronecker乘法
例2.11 演示Kronecker乘法的不可交換性。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> X=[1,2;3,4]; >> I=eye(3); >> A=kron(X,I); >> B=kron(I,X);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
X = 1 2 3 4 I = 1 0 0 0 1 0 0 0 1 A = 1 0 0 2 0 0 0 1 0 0 2 0 0 0 1 0 0 2 3 0 0 4 0 0 0 3 0 0 4 0 0 0 3 0 0 4 B = 1 2 0 0 0 0 3 4 0 0 0 0 0 0 1 2 0 0 0 0 3 4 0 0 0 0 0 0 1 2 0 0 0 0 3 4
說明
從結(jié)果中可以看出,對于相同的兩個矩陣,交換后的乘積是不同的結(jié)果,因此就證明了Kronecker乘法的不可交換性。關(guān)于Kronecker乘法,請讀者自行查閱相應(yīng)的書籍。
2.2.5 高維數(shù)組的對稱交換
對于高維數(shù)組,由于在結(jié)構(gòu)上多了維度,因此在操作方法上多了一些操作其他維度的命令,在本節(jié)中還是以簡單的實例來介紹這些函數(shù)的使用方法。
例2.12 對三維數(shù)組進行對稱交換。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> Data=[1,2,3,4;5,6,7,8;9,10,11,12]; >> A=reshape(Data,2,2,3); >> B=flipdim(A,1); >> C=flipdim(A,2); >> D=flipdim(A,3);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> A A(:,:,1) = 1 9 5 2 A(:,:,2) = 6 3 10 7 A(:,:,3) = 11 8 4 12 >> B B(:,:,1) = 5 2 1 9 B(:,:,2) = 10 7 6 3 B(:,:,3) = 4 12 11 8 >> C C(:,:,1) = 9 1 2 5 C(:,:,2) = 3 6 7 10 C(:,:,3) = 8 11 12 4 >> D D(:,:,1) = 11 8 4 12 D(:,:,2) = 6 3 10 7 D(:,:,3) = 1 9 5 2
說明
在MATLAB中,flipdim(A,k)命令的第一個輸入變量A表示的是被操作的數(shù)組,第二個輸入變量k指定的是對稱面。1表示的是與數(shù)組行平行的平分面,2表示的是與數(shù)據(jù)列平行的平分面,3表示的是與數(shù)據(jù)頁平行的平分面。
2.2.6 高維數(shù)組的維序號移動
例2.13 對三維數(shù)組進行“維序號移動”。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> Data=[1,2,3,4;5,6,7,8;9,10,11,12]; >> A=reshape(Data,2,2,3); >> Adim=shiftdim(A,1); >> Adim2=shiftdim(A,2); >> Adim3=shiftdim(A,3);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> A A(:,:,1) = 1 9 5 2 A(:,:,2) = 6 3 10 7 A(:,:,3) = 11 8 4 12 >> Adim Adim(:,:,1) = 1 6 11 9 3 8 Adim(:,:,2) = 5 10 4 2 7 12 >> Adim2 Adim2(:,:,1) = 1 5 6 10 11 4 Adim2(:,:,2) = 9 2 3 7 8 12 >> Adim3 Adim3(:,:,1) = 1 9 5 2 Adim3(:,:,2) = 6 3 10 7 Adim3(:,:,3) = 11 8 4 12
2.2.7 高維數(shù)組的廣義共軛轉(zhuǎn)置
例2.14 對三維數(shù)組進行廣義共軛轉(zhuǎn)置。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> A=reshape(Data,2,2,3); >> Ap1=permute(A,[1,2,3]); >> Ap2=permute(A,[2,3,1]); >> Ap3=permute(A,[3,2,1]); >> Ap4=permute(A,[3,1,2]);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> A A(:,:,1) = 1 9 5 2 A(:,:,2) = 6 3 10 7 A(:,:,3) = 11 8 4 12 >> Ap1 Ap1(:,:,1) = 1 9 5 2 Ap1(:,:,2) = 6 3 10 7 Ap1(:,:,3) = 11 8 4 12 >> Ap2 Ap2(:,:,1) = 1 6 11 9 3 8 Ap2(:,:,2) = 5 10 4 2 7 12 >> Ap3 Ap3(:,:,1) = 1 9 6 3 11 8 Ap3(:,:,2) = 5 2 10 7 4 12 >> Ap4 Ap4(:,:,1) = 1 5 6 10 11 4 Ap4(:,:,2) = 9 2 3 7 8 12
說明
在MATLAB中,permute命令的第一個輸入變量是被轉(zhuǎn)置的數(shù)組,第二個變量表示的是轉(zhuǎn)置方式的行數(shù)組,該行數(shù)組中元素位置號代表的是新數(shù)組的維序號數(shù)值。
2.2.8 高維數(shù)組的降維操作
例2.15 使用squeeze命令來撤銷“孤維”,使高維數(shù)組降維。
step 1 在MATLAB的命令窗口中輸入以下代碼:
>> B=cat(4,A(:,:,1),A(:,:,2),A(:,:,3)); >> C=squeeze(B); >> size_B=size(B); >> size_C=size(C);
step 2 查看程序結(jié)果。在命令窗口中輸入變量名稱,可以得到如下結(jié)果:
>> B B(:,:,1,1) = 1 9 5 2 B(:,:,1,2) = 6 3 10 7 B(:,:,1,3) = 11 8 4 12 >> C C(:,:,1) = 1 9 5 2 C(:,:,2) = 6 3 10 7 C(:,:,3) = 11 8 4 12 >> size_B size_B = 2 2 1 3 >> size_C size_C = 2 2 3
2.3 小結(jié)
在本章中,依次介紹了如何在MATLAB中創(chuàng)建和操作數(shù)值數(shù)組,這些內(nèi)容都是MATLAB的基礎(chǔ)知識,因此希望讀者能夠熟練掌握。其中數(shù)值數(shù)組是MATLAB所有操作的重要內(nèi)容,在后面的章節(jié)中,將主要介紹如何使用MATLAB進行數(shù)值運算。
- Project 2007項目管理實用詳解
- 玩轉(zhuǎn)智能機器人程小奔
- 精通MATLAB神經(jīng)網(wǎng)絡(luò)
- 21小時學(xué)通AutoCAD
- Managing Mission:Critical Domains and DNS
- Hadoop 2.x Administration Cookbook
- 西門子S7-200 SMART PLC實例指導(dǎo)學(xué)與用
- 自動控制理論(非自動化專業(yè))
- Implementing Splunk 7(Third Edition)
- 面向?qū)ο蟪绦蛟O(shè)計綜合實踐
- 網(wǎng)站前臺設(shè)計綜合實訓(xùn)
- Advanced Deep Learning with Keras
- Mastering Machine Learning with R
- ARM嵌入式系統(tǒng)開發(fā)完全入門與主流實踐
- 數(shù)據(jù)結(jié)構(gòu)與實訓(xùn)