MATLAB 基础知识 数据类型 分组数组 创建分类数组
本文說明如何創建分類數組。categorical 是一個數據類型,用來存儲值來自一組有限離散類別的數據。這些分類可以采用自然排序,但并不要求一定如此。分類數組可用來有效地存儲并方便地處理數據,同時還為數值賦予有意義的名稱。分類數組通常用在表中以定義由行構成的組。
默認情況下,分類數組包含的是未采用數學排序的類別。例如,離散的寵物類別集合 {‘dog’ ‘cat’ ‘bird’} 未采用有意義的數學排序,因此 MATLAB 使用字母排序 {‘bird’ ‘cat’ ‘dog’}。有序分類數組包含的類別具有有意義的數學排序。例如,離散的大小類別集合 {‘small’, ‘medium’, ‘large’} 采用數學排序 small < medium < large。
當您基于字符向量元胞數組或字符串數組創建分類數組時,前導空格和尾隨空格將被刪除。例如,如果您將文本 {’ cat’ 'dog '} 指定為類別,則在將它們轉換為類別時,它們將變成 {‘cat’ ‘dog’}。
基于字符向量元胞數組創建分類數組
您可以使用 categorical 函數基于數值數組、邏輯數組、字符串數組、字符向量元胞數組或現有的分類數組來創建分類數組。
創建一個包含新英格蘭地區的各州名的 1×11 字符向量元胞數組。
state = {'MA','ME','CT','VT','ME','NH','VT','MA','NH','CT','RI'};將元胞數組 state 轉換為未采用數學排序的分類數組。
state = categorical(state) state = 1x11 categoricalColumns 1 through 9MA ME CT VT ME NH VT MA NH Columns 10 through 11CT RI class(state) ans = 'categorical'列出變量 state 中的離散類別。
categories(state) ans = 6x1 cell{'CT'}{'MA'}{'ME'}{'NH'}{'RI'}{'VT'}這些類別按字母順序列出。
基于字符向量元胞數組創建有序分類數組
創建一個大小包含八個對象的 1×8 字符向量元胞數組。
AllSizes = {'medium','large','small','small','medium',...'large','medium','small'};元胞數組 AllSizes 具有三個相異值:‘large’、‘medium’ 和 ‘small’。使用字符向量元胞數組時,沒有方便的方式來指示 small < medium < large。
將元胞數組 AllSizes 轉換為有序分類數組。使用 valueset 指定用于定義類別的值 small、medium 和 large。對于有序分類數組,所指定的第一個類別是最小的,最后一個類別是最大的。
valueset = {'small','medium','large'}; sizeOrd = categorical(AllSizes,valueset,'Ordinal',true) sizeOrd = 1x8 categoricalColumns 1 through 6medium large small small medium large Columns 7 through 8medium small class(sizeOrd) ans = 'categorical'分類數組 sizeOrd 中值的順序保持不變。
列出分類變量 sizeOrd 中的離散類別。
categories(sizeOrd) ans = 3x1 cell{'small' }{'medium'}{'large' }這些類別按指定的順序列出以匹配數學排序 small < medium < large。
基于分 bin 數值數據創建有序分類數組
創建由 0 到 50 之間的 100 個隨機數構成的向量。
x = rand(100,1)*50;使用 discretize 函數,通過對 x 的值進行 bin 劃分,創建一個分類數組。將 0 到 15 之間的所有值歸入第一個 bin,15 到 35 之間的所有值歸入第二個 bin,35 到 50 之間的所有值歸入第三個 bin。每個 bin 包括左端點,但不包括右端點。
catnames = {'small','medium','large'}; binnedData = discretize(x,[0 15 35 50],'categorical',catnames);binnedData 是一個包含三個類別的 100×1 有序分類數組,其中 small < medium < large。
使用 summary 函數輸出每個類別中的元素數量。
summary(binnedData)small 30 medium 35 large 35基于字符串數組創建分類數組
從 R2016b 開始,您可以使用 string 函數創建字符串數組,并將字符串數組轉換為分類數組。
創建一個包含行星名稱的字符串數組。
str = string({'Earth','Jupiter','Neptune','Jupiter','Mars','Earth'}) str = 1x6 string"Earth" "Jupiter" "Neptune" "Jupiter" "Mars" "Earth"將 str 轉換為分類數組。
planets = categorical(str) planets = 1x6 categoricalEarth Jupiter Neptune Jupiter Mars Earth將缺失的元素添加到 str,并將其轉換為分類數組。在 str 包含缺失值的位置,planets 包含未定義值。
str(8) = 'Mars' str = 1x8 stringColumns 1 through 6"Earth" "Jupiter" "Neptune" "Jupiter" "Mars" "Earth"Columns 7 through 8<missing> "Mars"planets = categorical(str) planets = 1x8 categoricalColumns 1 through 6Earth Jupiter Neptune Jupiter Mars Earth Columns 7 through 8<undefined> Mars總結
以上是生活随笔為你收集整理的MATLAB 基础知识 数据类型 分组数组 创建分类数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网思维——用户思维
- 下一篇: 身体是自己的