- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 功能
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上版
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料匯出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策語句
- MATLAB - if 語句
- MATLAB - if else 語句
- MATLAB - if…elseif else 語句
- MATLAB - 巢狀 if 語句
- MATLAB - switch 語句
- MATLAB - 巢狀 switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - for 迴圈
- MATLAB - while 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - break 語句
- MATLAB - continue 語句
- MATLAB - end 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 無返回值函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - map 函式
- MATLAB - mean 函式
- MATLAB - end 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - try…catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 二維線圖
- MATLAB - 三維圖
- MATLAB - 圖表格式化
- MATLAB - 對數座標軸圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等值線圖
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換函式
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- MATLAB - 向座標軸新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者自定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形式
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 分類陣列
分類陣列是 MATLAB 中的一種資料型別,允許處理離散資料。離散資料是指由不同的、獨立的值或類別組成的資料型別。離散資料只能取特定的、有限的值,通常是整數或不同的類別。
分類陣列提供了一種有效儲存和使用者友好的非數值資料處理方法,並有助於保留資料值的描述性標籤。
以下是使用分類陣列的一些優點。
- 與元胞陣列或常規字串陣列相比,分類陣列更有效地使用記憶體。這在處理大型資料集時尤其有利。
- 分類陣列能夠更快地進行資料操作和分析。許多函式和運算都針對分類陣列進行了最佳化,與處理字串相比,這提高了效能。
- 分類陣列使管理和維護資料中一致的類別變得容易。
- 使用分類陣列建立的視覺化通常具有更清晰的標籤和圖例,從而更容易傳達資料中的見解。
此外,使用分類陣列還有一些缺點:
- 分類陣列最適合管理離散資料。如果您的資料包含連續或數值資料,則使用分類陣列可能不是最佳選擇,因為它們主要設計用於非數值的分類資訊。
- 很難對分類陣列執行復雜的運算。
建立分類陣列
可以使用以下方法在 MATLAB 中建立分類陣列:
- categorical() 函式
- discretize() 函式
使用 categorical() 函式
可以使用 categorical() 函式將字串或數字陣列轉換為分類陣列。
語法
C = categorical(A)
這裡 C 是從給定陣列 A 建立的分類陣列。
示例 1
在這個例子中,我們將使用元胞陣列資料,其詳細資訊如下所示。
data = {'Red', 'Blue', 'Green', 'Red', 'Green'};
primary_colors = categorical(data)
使用 categorical() 函式將元胞陣列轉換為分類陣列。
在 MATLAB 命令視窗中執行時,輸出為:
>> data = {'Red', 'Blue', 'Green', 'Red', 'Green'};
primary_colors = categorical(data)
primary_colors =
1x5 categorical array
Red Blue Green Red Green
>>
如果您想從 primary_colors 中瞭解類別,您可以使用 categories() 方法,該方法有助於從給定的分類陣列中獲取唯一類別。
categories(primary_colors)
此方法將給出分類陣列 primary_colors 中存在的不同類別。
在 MATLAB 命令視窗中執行相同的操作時,輸出如下:
>> categories(primary_colors)
ans =
3x1 cell array
{'Blue' }
{'Green'}
{'Red' }
>>
示例 2
在這個例子中,我們將首先建立一個數值陣列,然後為整數值分配類別。
A = [1 3 2; 2 1 3; 3 1 2]
C = categorical(A,[1 2 3],{'AA' 'BB' 'CC'})
在上面的例子中,A 是一個 3 行 3 列的矩陣。此矩陣的每個元素都是一個整數。
現在,程式碼 C = categorical(A,[1 2 3],{'AA' 'BB' 'CC'}) 使用指定的類別將數值陣列 A 轉換為分類陣列 C。
- A 是您要轉換的陣列。
- [1 2 3] 指定陣列 A 中存在的不同整數值。
- {'AA' 'BB' 'CC'} 提供要分配給整數值 1、2 和 3 的相應類別。
分類陣列 C 的每個元素都對應於原始陣列 A 的元素,它將整數值對映到其相應的類別。例如:
- A 中的整數 1 對映到 C 中的 'CC'。
- A 中的整數 2 對映到 C 中的 'BB'。
- A 中的整數 3 對映到 C 中的 'AA'。
在 Matlab 中執行後,輸出為:
>> A = [1 3 2; 2 1 3; 3 1 2]
C = categorical(A,[1 2 3],{'AA' 'BB' 'CC'})
A =
1 3 2
2 1 3
3 1 2
C =
3x3 categorical array
AA CC BB
BB AA CC
CC AA BB
>>
示例 3
在這個例子中,我們將建立一個有序分類陣列。
有序分類陣列遵循現有類別中的自然順序或層次結構。
A = [3 2;3 3;3 2;2 1;3 2]
valueset = [1:3];
categorynames = {'poor' 'fair' 'good'};
B = categorical(A,valueset,categorynames ,'Ordinal',true)
矩陣 A 是一個 5x2 矩陣,包含整數值。此矩陣有 5 行 2 列,每個元素都是一個整數。
valueset 是一個向量 [1, 2, 3],它定義了矩陣 A 中可能存在的整數值。這表示有序類別的級別。
categorynames 是一個元胞陣列 {'poor', 'fair', 'good'},它將相應的類別名稱分配給 valueset 中的值。類別名稱的順序對應於 valueset 中值的順序。
The code : B = categorical(A, valueset, categorynames, 'Ordinal', true);
將數值陣列 A 轉換為使用指定的 valueset 和 categorynames 的有序分類陣列 B。
- A 是要轉換的數值陣列。
- valueset 定義陣列中存在的不同整數值。
- categorynames 為整數值提供相應的類別名稱。
- 'Ordinal', true 指定分類陣列 B 應被視為有序,這意味著類別的順序很重要。
執行後,輸出如下:
>> A = [3 2;3 3;3 2;2 1;3 2]
valueset = [1:3];
categorynames = {'poor' 'fair' 'good'};
B = categorical(A,valueset,categorynames ,'Ordinal',true)
A =
3 2
3 3
3 2
2 1
3 2
B =
5x2 categorical array
good fair
good good
good fair
fair poor
good fair
>>
使用 discretize() 函式
建立類別型別資料的另一種方法是在 Matlab 中使用 discretize() 函式。
此函式採用數值陣列,並根據指定的邊緣或所需的箱數將其劃分為離散類別或箱。
語法
Y = discretize(X,edges)
這裡
X - 您想要離散化的輸入資料。
edges - 您想要將資料分類到的箱或區間的邊緣。
示例
scores = [68, 75, 82, 90, 55, 78, 92, 60, 88, 72]; edges = [0, 60, 80, 100]; categories = discretize(scores, edges)
在這個例子中,edges 陣列定義了對分數進行分類的區間。低於 60 的分數將被歸類為“低”,60 到 80 之間的分數將被歸類為“中”,80 到 100 之間的分數將被歸類為“高”。
執行後,輸出如下:
>> scores = [68, 75, 82, 90, 55, 78, 92, 60, 88, 72]; edges = [0, 60, 80, 100]; categories = discretize(scores, edges) categories = 2 2 3 3 1 2 3 2 3 2