




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(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對(duì)象 o 調(diào)用table構(gòu)造函數(shù)來構(gòu)造table對(duì)象o 通過轉(zhuǎn)換函數(shù)構(gòu)造table對(duì)象 · 訪問table中的數(shù)據(jù)MATLAB常用基本數(shù)據(jù)類型有:整型,浮點(diǎn)型,字符型,函數(shù)句柄,元胞數(shù)組和結(jié)構(gòu)體數(shù)組。除了這些基本數(shù)據(jù)類型,MATLAB還有很多其它的數(shù)據(jù)類型不為人熟悉,這些數(shù)據(jù)類型在編程中也非常有用。MATLAB高級(jí)數(shù)據(jù)類型系列旨在向大家介紹它們:比如containers.Map, tables,enumeration和time ser
2、ies等等,它們?yōu)槭裁从杏?,用來解決什么問題,并且怎樣在科學(xué)工程計(jì)算中怎么使用。上篇我們提到了映射表結(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)計(jì) 工具箱中的dataset ,其引入的目的就是用來取代dataset的數(shù)據(jù)類型。因?yàn)楸頎畹臄?shù)據(jù)在工程計(jì)算中越來越長久,有了table 類型,MATLAB用戶就可以不用購買統(tǒng)計(jì)工具箱,也能使用表狀的數(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)體)在表達(dá)某些復(fù)雜數(shù)據(jù)類型時(shí)的局限性。這里不再一一贅述,讀者只需
4、要認(rèn)識(shí)到:數(shù)組的局限性在于不能用來存放數(shù)值以外的數(shù)據(jù),而使用元胞讀取和索引內(nèi)容時(shí)有種種不方便,比如無法區(qū)分該數(shù)據(jù)中的表頭和其余的行數(shù)據(jù)。事實(shí)上,如果數(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ù)將會(huì)被分成數(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對(duì)象沿用表Table.2中nasdaq.csv文件,我們可以使用readtable 函數(shù),構(gòu)造一個(gè)新的table對(duì)象,把csv文件中的數(shù)據(jù)導(dǎo)入到該對(duì)象中。readtable函數(shù)接受文件名稱作為輸入,返回一個(gè)table對(duì)象。 1. % 通過readta
8、ble函數(shù)來構(gòu)造table對(duì)象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,因?yàn)閞eadtable 函數(shù)把nasdaq.csv中的第一行自動(dòng)變成了這個(gè)table的表頭,在創(chuàng)建table對(duì)象的時(shí)候,MATLAB會(huì)對(duì)做表頭的文字做處理,這里把Market Cap和IPO Year兩個(gè)詞中的空格去掉,縮成一個(gè)詞,這樣做是為了方便將來使用dot語法來訪問表中的數(shù)據(jù)。因?yàn)镸ATLAB修改了原來的表頭,所以這里給出了warning。調(diào)用table構(gòu)造函數(shù)來構(gòu)造tabl
10、e對(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)碼Abby 5086470001 Bob 5086470002 Charlie 5086470003 下面程序中第1,2行用元胞數(shù)組來表示表中每一列的數(shù)據(jù),第3行規(guī)定了表頭的名稱,第4行調(diào)用table的構(gòu)造函數(shù)創(chuàng)建table對(duì)象,先輸入數(shù)據(jù),再輸入表頭的名稱。表頭通過ta
11、ble對(duì)象的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對(duì)象的VariableNames,可以這樣理解VariableNames,我們可以把table看成由一個(gè)個(gè)列數(shù)據(jù)組成的數(shù)據(jù)結(jié)構(gòu),每列都是矢量,其中存放相同類型的數(shù)據(jù)。如果一個(gè)table有兩列,它就有兩個(gè)列矢量,每個(gè)列
13、矢量都是table的一個(gè)變量(Variable),給變量名字就是Variable Name。通過轉(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)成table。 1. % 通過array2table創(chuàng)建table對(duì)象 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對(duì)象,在命令行中顯示如下: 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ù)(什么是運(yùn)算符的重載,參加MATLAB面向?qū)ο缶幊?從入門到設(shè)計(jì)模式12.1節(jié)),于是支持MATLAB傳統(tǒng)的圓括號(hào)下標(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 使用圓括號(hào),返回的結(jié)果仍然是table,如果要訪問第2到3行,則: 1. % 使用下標(biāo)語法訪問table中的數(shù)據(jù)2. >> nasdaq(2:3,:)3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上市法律風(fēng)險(xiǎn)評(píng)估合同書
- 合資經(jīng)營餐廳合同協(xié)議范本專業(yè)版
- 家庭房產(chǎn)贈(zèng)與合同樣本
- 大型戶外海報(bào)張貼合同
- 如何有效降低合同糾紛風(fēng)險(xiǎn)
- 國際市場拓展代理合同
- 終止合伙合同協(xié)議書模板
- 杭州市股權(quán)轉(zhuǎn)讓合同范文
- 房屋建筑工程承包合同
- Unit 1 Friendship-Reading 教學(xué)設(shè)計(jì) 2024-2025學(xué)年滬教版英語七年級(jí)上冊(cè)
- 小學(xué)二年級(jí)有余數(shù)的除法口算題匯總(共300題)
- WTE朗文英語 1B 單詞卡片
- 網(wǎng)咖成本預(yù)算明細(xì)表
- 譯林版四年級(jí)下冊(cè)第一單元課件
- 化工制圖CAD教程-工藝流程圖課件
- 計(jì)算機(jī)軟件保護(hù)課件
- 人教版高中政治必修3政治與法治《第一課歷史和人民的選擇》教案及教學(xué)反思
- 【基于哈佛分析框架的上市公司財(cái)務(wù)研究-以中百集團(tuán)為例】
- 中職生心理特征和常見心理問題
- 美術(shù)第二課堂活動(dòng)方案2篇
- (名師整理)部編人教版語文初中課內(nèi)古詩文大全(五四制)
評(píng)論
0/150
提交評(píng)論