table,matlab,中table數(shù)據(jù)類型,創(chuàng)建,調(diào)用,訪問_第1頁(yè)
table,matlab,中table數(shù)據(jù)類型,創(chuàng)建,調(diào)用,訪問_第2頁(yè)
table,matlab,中table數(shù)據(jù)類型,創(chuàng)建,調(diào)用,訪問_第3頁(yè)
table,matlab,中table數(shù)據(jù)類型,創(chuàng)建,調(diào)用,訪問_第4頁(yè)
table,matlab,中table數(shù)據(jù)類型,創(chuàng)建,調(diào)用,訪問_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MATLABtable數(shù)據(jù)結(jié)構(gòu)目錄: 關(guān)于作者 table簡(jiǎn)介o為什么需要table數(shù)據(jù)結(jié)構(gòu)o通過導(dǎo)入數(shù)據(jù)構(gòu)造table對(duì)象o調(diào)用table構(gòu)造函數(shù)來構(gòu)造table對(duì)象o通過轉(zhuǎn)換函數(shù)構(gòu)造table對(duì)象 訪問table中的數(shù)據(jù)MATLABa用基本數(shù)據(jù)類型有:整型,浮點(diǎn)型,字符型,函數(shù)句柄,元胞數(shù)組和結(jié)構(gòu)體數(shù)組。除了這些基本數(shù)據(jù)類型,MATLAB5有很多其它的數(shù)據(jù)類型不為人熟悉,這些數(shù)據(jù)類型在編程中也非常有用。MATLABW級(jí)數(shù)據(jù)類型系列旨在向大家介紹它們:比如containers.Map,tables,enumeration和timeseries等等,它們?yōu)槭裁从杏?,用來解決什么問題,并且怎樣在

2、科學(xué)工程計(jì)算中怎么使用。上篇我們提到了映射表結(jié)構(gòu)(containers.Map)。本篇將介紹另一中新的MATLAB數(shù)據(jù)類型-table。table簡(jiǎn)介為什么需要table數(shù)據(jù)結(jié)構(gòu)MathWorks在MATLABR2013b中引入了一種新的數(shù)據(jù)結(jié)構(gòu)叫做tableotable類似統(tǒng)計(jì)工具箱中的dataset,其引入的目的就是用來取代dataset的數(shù)據(jù)類型。因?yàn)楸頎畹臄?shù)據(jù)在工程計(jì)算中越來越長(zhǎng)久,有了table類型,MATLAB用戶就可以不用購(gòu)買統(tǒng)計(jì)工具箱,也能使用表狀的數(shù)據(jù)結(jié)構(gòu)了。table本質(zhì)上來說是一種可以存放各種數(shù)據(jù)類型的容器,比如下面表Table.1中的數(shù)據(jù),其中既有字符型,又有數(shù)值類型,

3、其中第一行作為表頭:Symbol,Name,Market,Cap,IPO,Year是各列的名字。Table.1NASDAQ殳票名稱表NameSymbolAAPLAMZNMSFT在conatiners.Map原胞數(shù)組和結(jié)構(gòu)體)讀者只需要認(rèn)識(shí)到:AppleIncA,IncMicrosoftCorporation的章節(jié)中,我們介紹了MarketCapIPOYear$742.63B1980$173.33B1997$346.9B1986MATLAB勺基本數(shù)據(jù)類型(比如數(shù)組,胞讀取和索引內(nèi)容時(shí)有種種不方便,據(jù)。事實(shí)上,如果數(shù)據(jù)存放在如下的表Table.2中的CSVt件。在表達(dá)某些復(fù)雜數(shù)據(jù)類型時(shí)的局限性。這

4、里不再一一贅述,數(shù)組的局限性在于不能用來存放數(shù)值以外的數(shù)據(jù),而使用元比如無法區(qū)分該數(shù)據(jù)中的表頭和其余的行數(shù)CSVt件中,并且用importdata直接讀取"Symbol","Name","MarketCap","IPOYear""AAPL","AppleInc","$742.63B",1980"AMZN","AInc","$173.33B",1997"MSFT","M

5、icrosoftCorporation",”$346.9B",1986Table.2Nasdaq的csv原始數(shù)據(jù)讀入之后數(shù)據(jù)將會(huì)被分成數(shù)值和非數(shù)值部分:1. %用importdata直接讀入CSVC件結(jié)果存在struct中中的數(shù)值部分中的字符部分2. >>nasdaq=importdata('nasdaq.csv')3. nasdaq=%4. data:3x1double5. textdata:4x4cell6. >>nasdaq.data%csv7. ans=8. 19809. 199710. 198611. >>nas

6、daq.textdata%csv'"MarketCap"''$742.63B'12. ans=13. '"SymbolName"''"IPOYear"'14. 'AAPL''AppleInc'15. 'AMZN''AInc''$173.33B'16. 'MSFT''MicrosoftCorporation''$346.9B'顯然這不是我們所期待的

7、要導(dǎo)入格式。通過導(dǎo)入數(shù)據(jù)構(gòu)造table對(duì)象沿用表Table.2中nasdaq.csv文件,我們可以使用readtable函數(shù),構(gòu)造一個(gè)新的table對(duì)象,把csv文件中的數(shù)據(jù)導(dǎo)入到該對(duì)象中。readtable函數(shù)接受文件名稱作為輸入,返回一個(gè)table對(duì)象。1. %通過readtable函數(shù)來構(gòu)造table對(duì)象2. >>nasdaq=readtable('nasdaq.csv')3. Warning:VariablenamesweremodifiedtomakethemvalidMATLABidentifiers.4. nasdaq=5. SymbolNameMar

8、ketCapIPOYear6.7. 'AAPL''AppleInc''$742.63B'19808. 'AMZN''AInc''$173.33B'19979. 'MSFT''MicrosoftCorporation''$346.9B'1986注意第2行的warning,因?yàn)閞eadtable函數(shù)把nasdaq.csv中的第一行自動(dòng)變成了這個(gè)table的表頭,在創(chuàng)建table對(duì)象的時(shí)候,MATLAB會(huì)對(duì)做表頭的文字做處理,這里把MarketCap和IPO

9、Year兩個(gè)詞中的空格去掉,縮成一個(gè)詞,這樣做是為了方便將來使用dot語(yǔ)法來訪問表中的數(shù)據(jù)。因?yàn)镸ATLAB修改了原來的表頭,所以這里給出了warningo調(diào)用table構(gòu)造函數(shù)來構(gòu)造table對(duì)象我們還可以通過直接調(diào)用table類的構(gòu)造函數(shù)來創(chuàng)建table對(duì)象(什么是類的構(gòu)造函數(shù)見參加<>第2.5節(jié),構(gòu)造函數(shù)和類的名稱相同)。在containers.Map的介紹中,我們舉了電話號(hào)碼簿的例子,如表Table.3所示,它是我們這節(jié)要構(gòu)造的table對(duì)象的原始數(shù)據(jù)Table.3電話號(hào)碼簿姓名電話號(hào)碼Abby5086470001Bob5086470002Charlie5086470003

10、下面程序中第1,2行用元胞數(shù)組來表示表中每一列的數(shù)據(jù),第3行規(guī)定了表頭的名稱,第4行調(diào)用table的構(gòu)造函數(shù)創(chuàng)建table對(duì)象,先輸入數(shù)據(jù),再輸入表頭的名稱。表頭通過table對(duì)象的VariableNames屬性來設(shè)置。1. name='Abby''Bob''Charlie'%3x1列向鼻單2. number='5086470001''5086470002''5086470003'%3x1列向縣里3. colName='Name','Number'4. phoneta

11、ble=table(name,number,'VariableNames',colName)命令行顯示如下1. %phonetable在命令行中disp的結(jié)果2. phonetable=3. NameNumber4.5.6. 'Abby''5086470001'7. 'Bob''5086470002'8. 'Charlie''5086470003'第4行把Namef口Number做為table對(duì)象的VariableNames,可以這樣理解VariableNames,我們可以把tabl

12、e看成由一個(gè)個(gè)列數(shù)據(jù)組成的數(shù)據(jù)結(jié)構(gòu),每列都是矢量,其中存放相同類型的數(shù)據(jù)。如果一個(gè)table有兩列,它就有兩個(gè)列矢量,每個(gè)列矢量都是table的一個(gè)變量(Variable),給變量名字就是VariableName通過轉(zhuǎn)換函數(shù)構(gòu)造table對(duì)象除了使用table的構(gòu)造函數(shù)來創(chuàng)建table對(duì)象,還可以使用轉(zhuǎn)換函數(shù)把其它數(shù)據(jù)類型轉(zhuǎn)成table,下列通過數(shù)組數(shù)據(jù)類型類構(gòu)造table。下面的程序的1-2行,我們利用financial工具箱中的fetch函數(shù),從Yahoo財(cái)經(jīng)處得到雅虎從3月1日到3月10日的股票價(jià)格,fetch函數(shù)將返回一個(gè)數(shù)組,第3行我們利用array2table轉(zhuǎn)換函數(shù)把得到數(shù)組轉(zhuǎn)成

13、table。1. %通過array2table創(chuàng)建table對(duì)象2. conn=yahoo;3. array=fetch(conn,'YHOO','3/1/2015','3/10/2015');4. yhoo=array2table(array,.5. 'VariableNames','date','open','high','low','closing','volumn','adjusted')第4行中,我們通過Var

14、iableName來指定表頭的內(nèi)容,結(jié)果顯示如下1. %yhoo的table在命令行的顯示2. yhoo=3. dateopenhighlowclosingvolumnadjusted4.5. 7.3603e+0542.571.0601e+0742.686. 7.3603e+0543.61.1802e+0742.987. 7.3603e+0543.981.1888e+0743.448. 7.3603e+0544.181.1868e+0744.169. 7.3603e+0542.083.0099e+0743.9910. 7.3603e+0543.72.2392e+0742.6211. 7.360

15、3e+0544.061.1027e+0744.1142.9242.1842.6843.9342.6742.9844.2443.443.4444.3143.544.1644.3841.9743.9943.9542.4242.6244.4343.744.11訪問table中的數(shù)據(jù)通過表Table.1所建立的table對(duì)象,在命令行中顯示如下:1. %nasdaqtable在命令行中的顯示2. nasdaq=3. SymbolNameMarketCapIPOYear4.5.6. 'AAPL''AppleInc''$742.63B'19807. '

16、;AMZN''AInc''$173.33B'19978. 'MSFT''MicrosoftCorporation''$346.9B'1986我們可以通過使用dot+Variablename的語(yǔ)法直接訪問table中的列,返回的結(jié)果是cell格式的數(shù)據(jù):1. %使用dot語(yǔ)法訪問table中的數(shù)據(jù)2. >>nasdaq.Symbol%dot格式+變量名的訪問方式3. ans=4. 'AAPL'5. 'AMZN'6. 'MSFT'7. >>

17、class(nasdaq)%返回cell格式的數(shù)據(jù)8. ans=9. celltable類重載了subsref函數(shù)(什么是運(yùn)算符的重載,參加MATLAB5向?qū)ο缶幊?從入門到設(shè)計(jì)模式12.1節(jié)),于是支持MATLA轂統(tǒng)的圓括號(hào)下標(biāo)訪問,如果要訪問第一行,則:1. 使用下標(biāo)語(yǔ)法訪問table中的數(shù)據(jù)2. >>nasdaq(1,:)3. ans=4. SymbolNameMarketCapIPOYear5.6.7. 'AAPL''AppleInc''$742.63B'1980使用圓括號(hào),返回的結(jié)果仍然是table,如果要訪問第2至U3行,

18、則:1. %使用下標(biāo)語(yǔ)法訪問table中的數(shù)據(jù)2. >>nasdaq(2:3,:)3. ans=4. SymbolNameMarketCapIPOYear5.6.7. 'AMZN''AInc''$173.33B'19978. 'MSFT''MicrosoftCorporation''$346.9B'1986返回的結(jié)果仍然是table。table數(shù)據(jù)結(jié)構(gòu)支持MATLA肢統(tǒng)的花括號(hào)下標(biāo)訪問,返回的2$果是cell格式的數(shù)據(jù)1. %花括號(hào)下標(biāo)訪問2. >>nasdaq:,1%花括號(hào)下標(biāo)訪問,返回第一列中的數(shù)據(jù)3. an

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論