官术网_书友最值得收藏!

第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ù)值運算。

主站蜘蛛池模板: 突泉县| 栾川县| 黄陵县| 越西县| 股票| 清水河县| 从化市| 深泽县| 定州市| 嘉义县| 陆良县| 乡城县| 虎林市| 台中市| 天峻县| 渑池县| 宝鸡市| 铁岭县| 平邑县| 咸阳市| 宜兰市| 刚察县| 云林县| 涞源县| 阳高县| 曲麻莱县| 读书| 油尖旺区| 金塔县| 邯郸市| 北票市| 栾城县| 眉山市| 桂平市| 涟水县| 图片| 泗洪县| 亳州市| 江华| 信丰县| 沙田区|