日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab多维数组

發(fā)布時間:2025/3/21 循环神经网络 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab多维数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Matlab中習(xí)慣性的會將二維數(shù)組中的第一維稱為“行”第二維稱為“列”,而對于三維數(shù)組的第三位則是習(xí)慣性的稱為“頁”。在Matlab中將三維及三維以上的數(shù)組統(tǒng)稱為高維數(shù)組,三維數(shù)組也是高級運算的基礎(chǔ),本文將介紹三種創(chuàng)建三維數(shù)組的方法。

1、多維數(shù)組

第三維稱為頁,需要注意的是每一頁存放的二維數(shù)組維度要一致,也就是行列數(shù)要一致。

1

2

3

4

5

6

7

a=[1,2;

????3,4];

b=[2,2;

????5,6];

A(:,:,1)=a;

A(:,:,2)=b;

A(:,:,3)=a;

這樣就得到的A三維數(shù)組為2*2*3double

2、結(jié)構(gòu)體數(shù)組

(我學(xué)這個的目的是為了將不同維度的二維數(shù)組存放在一塊,將不同的二維數(shù)組賦值給新的數(shù)組,方便循環(huán)遍歷)

結(jié)構(gòu)體數(shù)組定義--賦值方式或者用struct

1

2

3

4

5

6

7

8

9

10

11

12

13

a=[1,2;

????3,4];

b=[1,2;

????5,6;

????7,7];

gmmdata(1)=struct('cluster',a);?

gmmdata(2)=struct('cluster',b);???

gmmdata(1)

c=gmmdata(1).cluster

text(1).cluster=a;%cluster為結(jié)構(gòu)體中一個名字

text(2).cluster=b;

text(2)

d=text(2).cluster

使用下標創(chuàng)建三維數(shù)組

  • 1

    在Matlab命令框中輸入以下代碼可以創(chuàng)建簡單的三維數(shù)組:

    for i=1:2

    for j=1:2

    for k=1:2

    A(i,j,k)=i+j+k;

    end

    end

    end

  • 2

    要查看程序結(jié)果。在命令窗口中輸入變量名稱按【Enter】,即可得到相應(yīng)的結(jié)果。如

    輸入:A(:,:,1)

    得到:

    ans =

    ? ? ?3 ? ? 4

    ? ? ?4 ? ? 5

    輸入:A(:,:,2)

    得到:ans =

    ? ? ?4 ? ? 5

    ? ? ?5 ? ? 6

    ?

    END

  • 使用低維數(shù)組創(chuàng)建三維數(shù)組

  • 1

    我們可以先輸入一個二維數(shù)組,然后通過第三維數(shù)組與其關(guān)系生成第三維數(shù)組,例如輸入以下代碼可以生成三維數(shù)組:

    D2=[1,2,3;4,5,6;7,8,9];

    D3(:,:,1)=D2;

    D3(:,:,2)=2*D2;

    D3(:,:,3)=3*D2;

  • 2

    要查看程序結(jié)果。

    輸入:D2 并按【Enter】可以查看輸入的二維數(shù)組。

    得到:

    D2 =

    ? ? ?1 ? ? 2 ? ? 3

    ? ? ?4 ? ? 5 ? ? 6

    ? ? ?7 ? ? 8 ? ? 9

    輸入:D3 并按【Enter】可以查看生成的三維數(shù)組。

    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

    ?

    END

  • 使用創(chuàng)建函數(shù)創(chuàng)建三維數(shù)組

  • 1

    使用Cat命令來創(chuàng)建高維數(shù)組。Cat命令的個事為【C=cat(dim,A1,A2,A3,A4……)】其中dim表示的是創(chuàng)建數(shù)組的維度,A1,A2,A3,A4表示的是各維度上的數(shù)組。在命令窗口中輸入以下代碼即可創(chuàng)建一個簡單的三維數(shù)組:

    D2=[1,2,3;4,5,6;7,8,9];

    C=cat(3,D2,2*D2,3*D2);

  • 2

    要查看程序結(jié)果

    輸入:C(:,:,1)?并按【Enter】

    得到:

    ans =

    ? ? ?1 ? ? 2 ? ? 3

    ? ? ?4 ? ? 5 ? ? 6

    ? ? ?7 ? ? 8 ? ? 9

    輸入:C(:,:,2) 并按【Enter】

    得到:

    ans =

    ? ? ?2 ? ? 4 ? ? 6

    ? ? ?8 ? ?10 ? ?12

    ? ? 14 ? ?16 ? ?18

    輸入:C(:,:,3) 并按【Enter】

    得到:

    ans =

    ? ? ?3 ? ? 6 ? ? 9

    ? ? 12 ? ?15 ? ?18

    ? ? 21 ? ?24 ? ?27

    ?

  • 3

    還可以利用【repmat】命令以及【reshape】命令在生成高維數(shù)組,因為用到的概率不涉及很高這里不一一闡述。

  • 1.一個三維數(shù)組由行、列和頁三維組成,其中每一頁包含一個由行和列構(gòu)成的二維數(shù)組。

    2.利用標準數(shù)組函數(shù)創(chuàng)建多維數(shù)組

    A=zeros(4,3,2)?生成一個4行3列2頁的三維全0數(shù)組,ones,rand和randn等函數(shù)有相似的用法。

    3.利用直接索引方式生成多維數(shù)組

    ??A=zeros(2,3)

    ??A(:,:,2)=ones(2,3)

    ??A(:,:,3)=4

    上面的代碼先生成一個二維數(shù)組作為三維數(shù)組的第一頁,然后通過數(shù)組直接索引,添加第二頁、第三頁。

    4.利用函數(shù)reshape和repmat生成多維數(shù)組

    B=reshape(A,2,9)

    B=[A(:,:,1) A(:,:,2) A(:,:,3)]??%結(jié)果與上面一樣。

    reshape(B,2,3,3)

    reshape(B,[2 3 3])??????????????%結(jié)果與上面一樣。

    提示:reshape函數(shù)可以將任何維數(shù)的數(shù)組轉(zhuǎn)變成其他維數(shù)的數(shù)組。

    5.利用repmat函數(shù)生成多維數(shù)組

    C=ones(2,3)

    repmat(C,[1 1 3]) % repmat寫出類似reshape的repmat(C,1,1,3)將顯示出錯

    提示:repmat是通過數(shù)組復(fù)制創(chuàng)建多維數(shù)組的,上面的代碼即是將數(shù)組C在行維和列維分別復(fù)制一次,然后再頁維復(fù)制三次得到2×3×3的三維數(shù)組。

    6.利用cat函數(shù)創(chuàng)建多維數(shù)組

    a=zeros(2);

    b=ones(2);

    c=repmat(2,2,2);

    D=cat(3,a,b,c)%創(chuàng)建三維數(shù)組

    D=cat(4,a,b,c)??%創(chuàng)建4維數(shù)組。

    D(:,1,:,:)??????%查看第一列的數(shù)據(jù)。

    size(D)?????%可以知道數(shù)組D的具體維數(shù)。

    6.數(shù)組運算與處理

    數(shù)組之間的運算要求兩個數(shù)組在任何一維都必須具有相同的大小。

    (1)squeeze函數(shù)用于刪除多維數(shù)組中的單一維(即大小為1的那些維)

    E=squeeze(D)?

    size(D) E的數(shù)據(jù)和D一樣,但比D少了一維,只有2行、2列和3頁。

    (2)reshape函數(shù)可以將一個三維向量變成一維向量。

    ???v(1,1,:)=1:6

    ???squeeze(v)

    v(:)

    (3)reshape函數(shù)用于改變多維數(shù)組的行、列、頁以及更高階的維數(shù),但不改變數(shù)組元素的總個數(shù)。

    F=cat(3,2+zeros(2,4),ones(2,4),zeros(2,4))

    G=reshape(F,[3,2,4])

    H=reshape(F,[4 3 2])??或K=reshape(F,2,12)

    多維數(shù)組的重組按這樣的順序:第一頁的第一列、第二列……,第二頁的第一列、第二列……。

    7.sub2ind函數(shù)和ind2sub函數(shù)用于多維數(shù)組的直接引用,索引順序與重組順序一致。

    ?sub2ind(size(F),1,1,1)??%求第1行、第1列、第1頁的數(shù)值的單一索引

    ?sub2ind(size(F),1,2,1)??%求第1行、第2列、第1頁的數(shù)值的單一索引

    sub2ind(size(F),1,2,3)??%求第1行、第2列、第3頁的數(shù)值的單一索引

    ?

    [r c p]=ind2sub(size(F),19) %由單一索引求其對應(yīng)的行列頁數(shù)值。

    8.函數(shù)flipdim用于多維數(shù)組的翻轉(zhuǎn),相當于二維數(shù)組中的flipud和fliplr函數(shù)。例如下面的代碼進行按行、列和按頁翻轉(zhuǎn)。

    M=reshape(1:18,2,3,3)?

    flipdim(M,1)??%每一頁中的行翻轉(zhuǎn)

    flipdim(M,2)??%每一頁中的列翻轉(zhuǎn)

    flipdim(M,3)??%將第一和第三頁翻轉(zhuǎn)調(diào)換

    9.函數(shù)shiftdim用于循環(huán)輪換一個數(shù)組的維數(shù)。如果一個數(shù)組r行、c列和p頁,則循環(huán)輪換一次,就生成一個c行、p列和r頁的數(shù)組。

    ???M %重新調(diào)用

    ???shiftdim(M,1) %輪換一次

    shiftdim(M,2) %輪換兩次

    數(shù)組輪換后規(guī)律很難直觀理解,我們可以將三維數(shù)組看成一個類似魔方的方形盒子

    函數(shù)shiftdim也支持負的循環(huán)輪換次數(shù)。執(zhí)行該輪換時,數(shù)組的維數(shù)增加,并且多出的維數(shù)均為單一維。

    ???M %重新調(diào)用

    size(M)

    shiftdim(M,-1)

    size(ans).

    10.函數(shù)permute和ipermute用于實現(xiàn)多維條件下的轉(zhuǎn)置操作。從本質(zhì)上講permute函數(shù)是shiftdimhas函數(shù)的擴展。

    M %重新調(diào)用

    permute(M,[2 3 1])

    shiftdim(M,1)?????%兩者結(jié)果一樣

    permute函數(shù)中的參數(shù)[2 3 1]表示使函數(shù)第二維成為第一維,第三維成為第二維,第一維成為第三維。

    11.?permute(M,[2 1 3])

    ???[2 1 3]表示將數(shù)組的行列相互轉(zhuǎn)置,頁保持不變(只在第一和第二維轉(zhuǎn)置)。

    permute函數(shù)的第一個參數(shù)為待轉(zhuǎn)置的數(shù)組,第二個參數(shù)為轉(zhuǎn)置順序,它必須是待轉(zhuǎn)置的多維數(shù)組的維數(shù)的某種排列,否則所進行的轉(zhuǎn)置無法進行。

    ???permute函數(shù)也可以用來將一個數(shù)組變成更高維的數(shù)組,例如shiftdim(M,-1)也可以用permute函數(shù)來實現(xiàn)。

    permute(M,[4 1 2 3])

    這是 因為任何一個數(shù)組都具有大于其本身尺寸的更高維數(shù),并且這些維數(shù)均為單一維數(shù)。例如二維數(shù)組具有頁這一維,只是只有一頁。總之超過數(shù)組本身大小的維數(shù)都是單一維。M是一個三維數(shù)組,其第四維必為單一維,因此將M的第四維與第一維轉(zhuǎn)置,第一維變成了單一維。

    12.二維數(shù)組兩次轉(zhuǎn)置變換回原來的形式,對于多維數(shù)組,用函數(shù)ipermute來取消permute所執(zhí)行的轉(zhuǎn)置操作。

    ??M %重新調(diào)用

    ?????permute(M,[3 2 1])

    ?????ipermute(M,[3 2 1])?%在我的Matlab上運行沒有達到預(yù)期效果

    13.size函數(shù)返回數(shù)組每一維的大小

    numel函數(shù)返回數(shù)組的總元素個數(shù)

    當不指定size的返回值時,將返回一個由數(shù)組的各維數(shù)組成的向量。當我們知道數(shù)組的維數(shù)時,可以將維數(shù)返回到指定變量中。

    [r c p]=size(M)

    r=size(M,1)

    c=size(M,2)

    p=size(M,3)

    v=size(M,4)

    當一個數(shù)組的維數(shù)或者某數(shù)組維數(shù)不確定時,可以利用函數(shù)ndims獲得數(shù)組的維數(shù)值。例如:ndims(M),與length(size(M))等效。

    ?多維數(shù)組常用函數(shù):

    函數(shù)

    描述

    ones(r,c,…),zeros(r,c,…)

    rand(r,c,…),randn(r,c,…)

    創(chuàng)建多維數(shù)組的基本函數(shù),分別創(chuàng)建全1、全0.隨機(0-1之間)和隨機正態(tài)分布的多維數(shù)組。

    reshape(B,2,3,3)

    reshape(B,[2 3 3])

    將一個數(shù)組變形成任意維數(shù)的數(shù)組

    repmat(C,[1 1 3])

    將一個數(shù)組復(fù)制成一個任意維數(shù)的數(shù)組

    cat(3,a,b,c)

    沿著一個指定的維將數(shù)組連接起來

    squeeze(D)

    刪除大小等于1的維,即單一維。

    sub2ind(size(F),1,1,1)

    [r,c,p]=ind2sub(size(F),19)

    將下標轉(zhuǎn)化為單一索引值

    將單一索引值轉(zhuǎn)化成下標

    flipdim(M,1)

    沿著一個指定的維輪換順序。等效于二維數(shù)組中的flippud和fliplr函數(shù)

    shiftdim(M,2)

    循環(huán)輪換。第二個參數(shù)為正的情況下,進行各維的循環(huán)輪換;若為負數(shù),將數(shù)組的維數(shù)增加。

    permute(M,[2 1 3])

    iprmute(M,[2 1 3])

    多維數(shù)組的轉(zhuǎn)置操作,前者為轉(zhuǎn)置操作,后者為取消轉(zhuǎn)置操作。

    size(M)

    [r,c,p]=size(M)

    返回各維的大小

    r=size(M,1)

    返回行數(shù)

    c=size(M,2)

    返回列數(shù)

    p=size(M,3)

    返回頁數(shù)

    ndims(M)

    獲取數(shù)組的維數(shù)

    numel(M)

    獲取數(shù)組的元素總個數(shù)

  • 總結(jié)

    以上是生活随笔為你收集整理的matlab多维数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。