小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MATLAB的Map數(shù)據(jù)類型

 goandlove 2019-01-22

6  Map容器

Map容器是MATLAB R2008b版本新增加的數(shù)據(jù)類型。

6.1  Map數(shù)據(jù)類型介紹

1.Map數(shù)據(jù)結(jié)構(gòu)概述

一個Map容器是一種快速鍵查找數(shù)據(jù)結(jié)構(gòu),可以提供多種方法對其中的個體元素進(jìn)行尋訪。和MATLAB其他多數(shù)數(shù)據(jù)結(jié)構(gòu)不同的是,一般的數(shù)據(jù)結(jié)構(gòu)只能通過整數(shù)下標(biāo)索引來進(jìn)行尋訪,而一個Map的索引可以是任何數(shù)值或者字符串。

對一個Map元素進(jìn)行尋訪的索引稱為“鍵”(key)。這些鍵和其相對應(yīng)的數(shù)據(jù)值存儲在Map中。一個Map的每一個條目都包括唯一的鍵和相對應(yīng)的值。圖3-6所示是一個儲存降雨量統(tǒng)計數(shù)據(jù)的Map,此Map中的一個索引是字符串Aug”,對應(yīng)于該月的降雨量37.3

3-6  月降雨量統(tǒng)計數(shù)據(jù)Map容器示意圖

Map中所使用的鍵不必像其他數(shù)組那樣限制在整數(shù)范圍內(nèi)。一個鍵可以是以下任何一種類型

(1)1xN字符串;

(2)單精度或者雙精度實數(shù)標(biāo)量;

(3)有符號或者無符號標(biāo)量整數(shù)。

Map中存儲的數(shù)據(jù)可以是任何類型,包括數(shù)值數(shù)組、結(jié)構(gòu)數(shù)組、元胞數(shù)組、字符串、對象,或者是其他Map。需要指出的是:當(dāng)Map中存儲的是數(shù)值標(biāo)量或者字符串?dāng)?shù)組的時候,該Map的內(nèi)存的使用效率最高。

2.Map類介紹

一個Map實際上是MATLAB中稱作Map類的一個對象。它也是一個句柄對象,和其他的MATLAB句柄對象一樣。

Map類的所有對象都具有3種屬性。用戶不能直接對這些屬性進(jìn)行修改,而只能通過作用于Map類的函數(shù)進(jìn)行修改。具體屬性說明見表3-9。

3-9  Map類屬性介紹

屬    性

說    明

默認(rèn)值

Count

無符號64位整數(shù),表示Map對象中存儲的key/value對的總數(shù)

0

KeyType

字符串,表示Map對象中包括的key的類型。KeyType可以是如下類型:雙精度,單精度,有符號或者無符號32位或64位整數(shù)。如果用戶添加了不支持的類型,如int8MATLAB會自動將其轉(zhuǎn)換為雙精度類型

char

ValueType

字符串,表示Map對象中包括的數(shù)據(jù)類型。如果一個Map中存儲的是同一種類型的數(shù)據(jù),那么ValueType就會被設(shè)置成該類型。例如Map中的數(shù)據(jù)全部為字符串?dāng)?shù)組,那么ValueType就是'char'。在其他情況下,ValueType的值是 'any'

any

查看Map屬性的方法:在Map名字的后面加一個小數(shù)點'.',然后跟著寫屬性名即可,和結(jié)構(gòu)數(shù)組的表現(xiàn)形式一樣。例如,為了查看名為mapObjMap中的鍵類型,可以使用如下命令: 

mapObj.KeyType

Map是一個句柄對象,因此,如果用戶創(chuàng)建了一個對象的副本,MATLAB并沒有創(chuàng)建一個新的Map,而是創(chuàng)建一個指定的已有Map的新句柄。如果用戶通過新句柄改變了Map中的內(nèi)容,MATLAB同時也會將此改變應(yīng)用于原始Map。但是用戶可以在不影響原始Map的情況下刪除新句柄。

表3-10中的函數(shù)可以應(yīng)用于Map類,具體的用法將在后面的章節(jié)中介紹。

3-10 Map類函數(shù)

函    數(shù)

說    明

函    數(shù)

說    明

isKey

檢查Map是否包含指定鍵

remove

Map中刪除鍵和其相對應(yīng)的值

keys

Map中所有鍵的名稱

size

Map的尺寸

length

Map的長度

values

Map中包括的值

6.2  Map對象的創(chuàng)建

Map是一個Map類中的對象,它由MATLAB中名為“容器”(containers)的一個包來定義,可以通過構(gòu)造器函數(shù)來創(chuàng)建。在調(diào)用構(gòu)造器創(chuàng)建Map對象的過程中,必須指定包的名字containers

newMap = containers.Map(optional_keys_and_values)

1.空Map對象的創(chuàng)建

當(dāng)用戶在調(diào)用Map構(gòu)造器的時候,若未指定輸入變量,那么MATLAB將會創(chuàng)建一個空Map對象。例如:

>> newMap = containers.Map()

newMap =

  containers.Map handle

  Package: containers

  Properties:

        Count: 0

      KeyType: 'char'

    ValueType: 'any'

  Methods, Events, Superclasses

空Map對象的屬性被設(shè)置為了默認(rèn)屬性:

(1) Count = 0

(2) KeyType = 'char'

(3) ValueType = 'any'

一旦用戶創(chuàng)建了空Map對象,之后就可以使用keysvalues方法對其進(jìn)行填充。

2.初始化后的Map對象創(chuàng)建

大多數(shù)情況下,用戶希望在創(chuàng)建Map對象的時候就對其進(jìn)行初始化,至少對部分鍵和值進(jìn)行初始化。用戶可以通過以下語法輸入一個或多個keys/values對。

mapObj = containers.Map({key1, key2, ...}, {val1, val2, ...});

對于鍵和值為字符串的情況,應(yīng)注意將字符串放到單引號里面。例如,創(chuàng)建一個包括字符串鍵的Map對象可以使用以下命令:

mapObj = containers.Map(...

   {'keystr1', 'keystr2', ...}, {val1, val2, ...});

【例3-30】  創(chuàng)建圖3-6中所示降雨量統(tǒng)計數(shù)據(jù)的Map對象。

>> k = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...

 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Annual'};

>> v = {327.2, 368.2, 197.6, 178.4, 100.0,  69.9, ...

  32.3,  37.3,  19.0,  37.0,  73.2, 110.9, 1551.0};

>> rainfallMap = containers.Map(k, v)

rainfallMap =

 

  Map with properties:

 

        Count: 13

      KeyType: char

    ValueType: double

從顯示的結(jié)果可以看出:Count屬性現(xiàn)在被設(shè)置成了Map中包括的keys/values 對的數(shù)目13KeyType 屬性是char, ValueType 屬性則是double

6.3  查看Map的內(nèi)容

Map中的每個條目都包括兩個部分:一個唯一的鍵和其相對應(yīng)的值??梢酝ㄟ^使用keys函數(shù)查看Map中包括的所有鍵,同時還可以使用values函數(shù)查看所有的值。

【例3-31】  Map內(nèi)容的查看方法示例。

創(chuàng)建一個名為ticketsMap對象,存儲航空公司機票的編號和乘客名字。

>> ticketMap = containers.Map(...

    {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...

    {'James Enright', 'Carl Haynes', 'Sarah Latham', ...

     'Bradley Reid'});

>> keys(ticketMap)            %  使用keys函數(shù)查看Map中包括的所有鍵

ans =

    '2R175'    'A479GY'    'B7398'    'NZ1452'

>> values(ticketMap)          %  使用values函數(shù)查看Map中包括的所有值

ans =

    'James Enright'    'Sarah Latham'    'Carl Haynes'    'Bradley Reid'


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多