版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、MATLAB table數(shù)據(jù)結(jié)構(gòu) 目錄:· 關(guān)于作者· table簡介o 為什么需要table數(shù)據(jù)結(jié)構(gòu)o 通過導(dǎo)入數(shù)據(jù)構(gòu)造table對象 o 調(diào)用table構(gòu)造函數(shù)來構(gòu)造table對象o 通過轉(zhuǎn)換函數(shù)構(gòu)造table對象 · 訪問table中的數(shù)據(jù)MATLAB常用基本數(shù)據(jù)類型有:整型,浮點型,字符型,函數(shù)句柄,元胞數(shù)組和結(jié)構(gòu)體數(shù)組。除了這些基本數(shù)據(jù)類型,MATLAB還有很多其它的數(shù)據(jù)類型不為人熟悉,這些數(shù)據(jù)類型在編程中也非常有用。MATLAB高級數(shù)據(jù)類型系列旨在向大家介紹它們:比如containers.Map, tables,enumeration和time ser
2、ies等等,它們?yōu)槭裁从杏?,用來解決什么問題,并且怎樣在科學(xué)工程計算中怎么使用。上篇我們提到了映射表結(jié)構(gòu)(containers.Map )。本篇將介紹另一中新的MATLAB數(shù)據(jù)類型-table。table簡介為什么需要table數(shù)據(jù)結(jié)構(gòu)MathWorks在MATLAB R2013b中引入了一種新的數(shù)據(jù)結(jié)構(gòu)叫做table 。table類似統(tǒng)計 工具箱中的dataset ,其引入的目的就是用來取代dataset的數(shù)據(jù)類型。因為表狀的數(shù)據(jù)在工程計算中越來越長久,有了table 類型,MATLAB用戶就可以不用購買統(tǒng)計工具箱,也能使用表狀的數(shù)據(jù)結(jié)構(gòu)了。 table本質(zhì)上來說是一種可以存放各種數(shù)據(jù)類型的
3、容器,比如下面表Table.1中的數(shù)據(jù),其中既有字符型,又有數(shù)值類型,其中第一行作為表頭:Symbol,Name,Market,Cap,IPO, Year是各列的名字。 Table.1 NASDAQ股票名稱表 SymbolNameMarket CapIPO YearAAPLApple Inc$742.63B1980AMZNA, Inc$173.33B1997MSFTMicrosoft Corporation$346.9B1986 在conatiners.Map的章節(jié)中,我們介紹了MATLAB的基本數(shù)據(jù)類型(比如數(shù)組,原胞數(shù)組和結(jié)構(gòu)體)在表達某些復(fù)雜數(shù)據(jù)類型時的局限性。這里不再一一贅述,讀者只需
4、要認(rèn)識到:數(shù)組的局限性在于不能用來存放數(shù)值以外的數(shù)據(jù),而使用元胞讀取和索引內(nèi)容時有種種不方便,比如無法區(qū)分該數(shù)據(jù)中的表頭和其余的行數(shù)據(jù)。事實上,如果數(shù)據(jù)存放在如下的CSV文件中,并且用importdata 直接讀取表Table.2中的CSV文件。 "Symbol","Name","Market Cap","IPO Year""AAPL","Apple Inc","$742.63B",1980"AMZN","A Inc"
5、;,"$173.33B",1997"MSFT","Microsoft Corporation","$346.9B",1986Table.2 Nasdaq 的 csv 原始數(shù)據(jù) 讀入之后數(shù)據(jù)將會被分成數(shù)值和非數(shù)值部分: 1. % 用importdata直接讀入CSV文件2. >> nasdaq = importdata('nasdaq.csv')3. nasdaq = % 結(jié)果存在struct中4. data: 3x1 double5. textdata: 4x4 cell6. >&
6、gt; nasdaq.data % csv中的數(shù)值部分7. ans =8. 19809. 199710. 1986 11. >> nasdaq.textdata % csv中的字符部分12. ans = 13. '"Symbol"' '"Name"' '"Market Cap"' '"IPO Year"'14. 'AAPL' 'Apple Inc' '$742.63B' ''
7、15. 'AMZN' 'A Inc' '$173.33B' '' 16. 'MSFT' 'Microsoft Corporation' '$346.9B' '' 顯然這不是我們所期待的要導(dǎo)入格式。通過導(dǎo)入數(shù)據(jù)構(gòu)造table對象沿用表Table.2中nasdaq.csv文件,我們可以使用readtable 函數(shù),構(gòu)造一個新的table對象,把csv文件中的數(shù)據(jù)導(dǎo)入到該對象中。readtable函數(shù)接受文件名稱作為輸入,返回一個table對象。 1. % 通過readta
8、ble函數(shù)來構(gòu)造table對象2. >> nasdaq = readtable('nasdaq.csv')3. Warning: Variable names were modified to make them valid MATLAB identifiers. 4. nasdaq = 5. Symbol Name MarketCap IPOYear6. _ _ _ _7. 'AAPL' 'Apple Inc' '$742.63B' 1980 8. 'AMZN' 'A Inc'
9、9;$173.33B' 1997 9. 'MSFT' 'Microsoft Corporation' '$346.9B' 1986 注意第2行的warning,因為readtable 函數(shù)把nasdaq.csv中的第一行自動變成了這個table的表頭,在創(chuàng)建table對象的時候,MATLAB會對做表頭的文字做處理,這里把Market Cap和IPO Year兩個詞中的空格去掉,縮成一個詞,這樣做是為了方便將來使用dot語法來訪問表中的數(shù)據(jù)。因為MATLAB修改了原來的表頭,所以這里給出了warning。調(diào)用table構(gòu)造函數(shù)來構(gòu)造tabl
10、e對象我們還可以通過直接調(diào)用table類的構(gòu)造函數(shù)來創(chuàng)建table對象 (什么是類的構(gòu)造函數(shù)見參加<>第2.5節(jié),構(gòu)造函數(shù)和類的名稱相同)。在containers.Map 的介紹中,我們舉了電話號碼簿的例子,如表Table.3所示,它是我們這節(jié)要構(gòu)造的table對象的原始數(shù)據(jù) Table.3 電話號碼簿 姓名電話號碼Abby 5086470001 Bob 5086470002 Charlie 5086470003 下面程序中第1,2行用元胞數(shù)組來表示表中每一列的數(shù)據(jù),第3行規(guī)定了表頭的名稱,第4行調(diào)用table的構(gòu)造函數(shù)創(chuàng)建table對象,先輸入數(shù)據(jù),再輸入表頭的名稱。表頭通過ta
11、ble對象的VariableNames屬性來設(shè)置。1. name='Abby''Bob''Charlie' % 3x1列向量2. number='5086470001''5086470002''5086470003' % 3x1列向量3. colName='Name','Number'4. phonetable=table(name,number,'VariableNames',colName) 命令行顯示如下 1. % phonetable在命令行中
12、disp的結(jié)果 2. phonetable = 3. Name Number 4. _ _5. 6. 'Abby' '5086470001'7. 'Bob' '5086470002'8. 'Charlie' '5086470003'第4行把Name和Number做為table對象的VariableNames,可以這樣理解VariableNames,我們可以把table看成由一個個列數(shù)據(jù)組成的數(shù)據(jù)結(jié)構(gòu),每列都是矢量,其中存放相同類型的數(shù)據(jù)。如果一個table有兩列,它就有兩個列矢量,每個列
13、矢量都是table的一個變量(Variable),給變量名字就是Variable Name。通過轉(zhuǎn)換函數(shù)構(gòu)造table對象除了使用table的構(gòu)造函數(shù)來創(chuàng)建table對象,還可以使用轉(zhuǎn)換函數(shù)把其它數(shù)據(jù)類型轉(zhuǎn)成table,下列通過數(shù)組數(shù)據(jù)類型類構(gòu)造table。下面的程序的1-2行,我們利用financial工具箱中的fetch函數(shù),從Yahoo財經(jīng)處得到雅虎從3月1日到3月10日的股票價格,fetch函數(shù)將返回一個數(shù)組,第3行我們利用array2table轉(zhuǎn)換函數(shù)把得到數(shù)組轉(zhuǎn)成table。 1. % 通過array2table創(chuàng)建table對象 2. conn = yahoo;3. array
14、= fetch(conn,'YHOO','3/1/2015','3/10/2015');4. yhoo = array2table(array,.5. 'VariableNames', 'date','open','high','low','closing','volumn','adjusted')第4行中,我們通過VariableName來指定表頭的內(nèi)容,結(jié)果顯示如下 1. % yhoo的table在命令行的顯示2.
15、yhoo = 3. date open high low closing volumn adjusted4. _ _ _ _ _ _ _5. 7.3603e+05 42.57 42.92 42.18 42.68 1.0601e+07 42.68 6. 7.3603e+05 43.6 43.93 42.67 42.98 1.1802e+07 42.98 7. 7.3603e+05 43.98 44.24 43.4 43.44 1.1888e+07 43.44 8. 7.3603e+05 44.18 44.31 43.5 44.16 1.1868e+07 44.16 9. 7.3603e+05 4
16、2.08 44.38 41.97 43.99 3.0099e+07 43.99 10. 7.3603e+05 43.7 43.95 42.42 42.62 2.2392e+07 42.62 11. 7.3603e+05 44.06 44.43 43.7 44.11 1.1027e+07 44.11 訪問table中的數(shù)據(jù)通過表Table.1所建立的table對象,在命令行中顯示如下: 1. % nasdaq table在命令行中的顯示2. nasdaq = 3. Symbol Name MarketCap IPOYear4. _ _ _ _5. 6. 'AAPL'
17、'Apple Inc' '$742.63B' 1980 7. 'AMZN' 'A Inc' '$173.33B' 1997 8. 'MSFT' 'Microsoft Corporation' '$346.9B' 1986 我們可以通過使用dot+Variablename的語法直接訪問table中的列,返回的結(jié)果是cell格式的數(shù)據(jù): 1. % 使用dot語法訪問table中的數(shù)據(jù)2. >> nasdaq.Symbol % dot格式+變量名的訪問方式3.
18、ans = 4. 'AAPL'5. 'AMZN'6. 'MSFT'7. >> class(nasdaq) % 返回cell格式的數(shù)據(jù)8. ans =9. cell table類重載了subsref函數(shù)(什么是運算符的重載,參加MATLAB面向?qū)ο缶幊?從入門到設(shè)計模式12.1節(jié)),于是支持MATLAB傳統(tǒng)的圓括號下標(biāo)訪問,如果要訪問第一行,則:1. 使用下標(biāo)語法訪問table中的數(shù)據(jù)2. >> nasdaq(1,:)3. ans = 4. Symbol Name MarketCap IPOYear5. _ _ _ _6. 7. 'AAPL' 'Apple Inc' '$742.63B' 1980 使用圓括號,返回的結(jié)果仍然是table,如果要訪問第2到3行,則: 1. % 使用下標(biāo)語法訪問table中的數(shù)據(jù)2. >> nasdaq(2:3,:)3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩講話稿(資料15篇)
- 感恩母親講話稿(21篇)
- 愚人節(jié)創(chuàng)意活動策劃方案3篇
- 寶寶周歲慶典講話稿
- 意外保險基礎(chǔ)知識
- 智研咨詢發(fā)布:2024年中國氮化硼行業(yè)市場現(xiàn)狀、發(fā)展概況、未來前景分析報告
- 2024年中國熔鹽閥行業(yè)發(fā)展策略、市場環(huán)境及前景研究分析報告
- 吸氧治療流程圖解
- 拿下試卷的秘密武器
- 腹腔鏡結(jié)直腸癌根治術(shù)中改良體位擺放對體位并發(fā)癥的影響
- 《梅大高速茶陽路段“5·1”塌方災(zāi)害調(diào)查評估報告》專題警示學(xué)習(xí)
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學(xué)設(shè)計2022課標(biāo)
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
- 常州市2023-2024學(xué)年八年級上學(xué)期期末地理試卷(含答案解析)
- 道路安全教育課件
- 2023年浙江省衢州市中考語文試題(含答案解析)
評論
0/150
提交評論