table數據類型使用來取代statistics toolbox中的dataset的,可以生成帶有表頭的表格數據。
- 讀取數據生成table
table = readtable('1.txt')
用空格或者逗號分隔開,保存爲txt或者CSV格式。
2. 調用構造函數生成table
number = ['1'; '2'; '3'] % 也可以是cell{}
value = ['1'; '2'; '3' ] % 也可以是cell{}
colName = ["number" ,"value"] % 也可以是cell{},如果是[]需要是""而不能是''
tabl1 = table(number,value,'VariableNames',colName)
2. 通過array2table,cell2table,struct2table 轉換成table
1. array2table
· · · 用於將數組轉換成table,類似於上面用構造函數生成table,需要額外來指定表頭。
ta = table(array,'VariableNames',colName) % 注意需要維度匹配
array = table2array(ta) % 表頭會被去掉
- cell2table
· · · 用於將元胞數組轉換成table,類似於上面用構造函數生成table,需要額外來指定表頭。
ta = table(cell,'VariableNames',colName) % 注意需要維度匹配
cell = table2array(ta) % 表頭會被去掉
- struct2table
· · · 用於將結構體轉換成table,類似於上面用構造函數生成table,不需要額外來指定表頭,field的名稱即爲表頭。
stu.name = ["AA","BB","CC"]';
stu.grade = [1 2 3]';
table = struct2table(stu)
kk = table2struct(table) % 轉換成struct數組,與stu不同,體會區別
轉換回來的結構體與原來的結構體是不同的,區別可以從圖中看出來。
對table的訪問和刪除和一般的數組非常相似,因爲運算符都被重載好了,這個不用細說,可以自己動手試試,它有兩種訪問方式,返回的數據類型是不一樣的。
table(1,:) % 返回類型是table
table{1,:} % 返回類型是array
table.name % 返回類型是array,與上面的方法效果一樣
table.name = []; % 刪掉某列,某個單元同理
[table1; table2] % 合併table
[table1 table2] % 合併table 需要注意的是,兩個都必須是同類型的表格
table.new = {...} % 這樣可以直接增加一欄,增加一行可以考慮生成table再合併
一個比較重要的函數需要介紹,就是varfun(),這個函數主要是用來向量化操作的,與cellfun和arrayfun是一樣的,只是這個使用來對table中每個元素進行運算。
out = varfun(@fun,table)
合併table的操作主要是join(),outerjoin(),innerjoin(),這幾個函數都是用來合併表格的,關於table更多的函數我們可以查看table對象的屬性。