此示例显示如何创建分类数组。分类
是一种用于存储来自有限组离散类别的值的数据类型。这些类别可以具有自然顺序,但不需要。分类阵列提供有效的存储和方便的数据操作,同时也为值维护有意义的名称。分类阵列通常用于表格以定义行组。
默认情况下,分类阵列包含没有数学排序的类别。例如,离散的宠物类别集{'狗'猫''鸟'}
没有有意义的数学排序,因此Matlab®使用字母顺序排序{'鸟''猫''狗'}
。序单分类阵列包含具有有意义数学排序的类别。例如,离散的大小类别集{'小号中号大号'}
有数学排序小<媒体<大
。
从字符向量或字符串数组的单元格阵列创建分类阵列时,将删除前导和尾随空格。例如,如果您将文本{'cat''dog'}指定为类别,那么当您将它们转换为类别时,他们会成为{'cat''狗'}。
你可以使用分类
函数从数字阵列,逻辑阵列,字符串数组,字符向量或现有分类数组的逻辑阵列,逻辑阵列,字符串数组,单元格数组中创建一个分类数组。
创建一个包含来自新英格兰的状态名称的一个1×11个字符向量。
状态= [“嘛”那“我”那“CT”那“vt”那“我”那“nh”那“vt”那“嘛”那“nh”那“CT”那“ri”];
转换单元格数组,状态
,对没有数学顺序的分类阵列。
状态=分类(州)
州=1x11分类柱1到9 m m me ct vt m m m m m me nh柱10到11 ct ri
班级(州)
ANS ='分类'
列出变量中的离散类别状态
。
类别(州)
ans =.6x1细胞{'ct'} {'ma'} {'me'} {'nh'} {'ri'} {'r'} {'vt'} {'vt'}
这些类别按字母顺序列出。
创建一个包含八个对象的大小的1×8个单元格数组。
AllSizes = [“中等的”那“大的”那“小的”那“小的”那“中等的”那......“大的”那“中等的”那“小的”];
细胞阵列,Allsizes.
,有三个不同的值:'大的'
那'中等的'
, 和'小的'
。通过字符向量的单元格阵列,没有方便的方法来指示小<媒体<大
。
转换单元格数组,Allsizes.
,到序列分类阵列。用价值计
指定值小的
那中等的
, 和大的
,定义类别。对于序列分类阵列,指定的第一个类别是最小,最后一个类别是最大的。
valueet = [“小的”那“中等的”那“大的”];sizeord =分类(AllSizes,Valueet,'序号',真的)
sizeord =.1x8分类柱1到6中小小小中小型大柱7到8中小
班级(sciodord)
ANS ='分类'
分类阵列中值的顺序,sizeord.
, 保持不变。
列出分类变量中的离散类别,sizeord.
。
分类(siadeord)
ans =.3x1细胞{'小号中号大号' }
这些类别列于指定的顺序以匹配数学排序小<媒体<大
。
在零和50之间创建100个随机数的向量。
x = rand(100,1)* 50;
使用离散化
通过键入值来创建分类数组的功能X
。将所有值与零和15之间的所有值放在第一个箱中,在第二个箱中的所有值之间,在第三个箱中的35到50之间的所有值之间。每个垃圾箱都包括左端点,但不包括右端点。
catnames = [“小的”那“中等的”那“大的”];binneddata =离散化(x,[0 15 35 50],'分类',Catnames);
binneddata.
是一个100×1个序列分类阵列,其中三类,这样小<媒体<大
。
使用概括
函数打印每个类别中的元素数。
摘要(BinnedData)
小30媒体35大35
从R2016B开始,您可以使用该r2016b创建字符串数组细绳
函数并将它们转换为分类数组。
创建包含行星名称的字符串数组。
str = [“地球”那“木星”那“海王星”那“木星”那“火星”那“地球”]
str =1x6字符串“地球”“木星”“海王星”“木星”“火星”“地球”
转变str.
到一个分类的数组。
行星=分类(str)
行星=1x6分类地球木星海王星木星火星地球
添加缺少的元素str.
并将其转换为分类阵列。在哪里str.
有缺失的值,行星
具有未定义的值。
str(8)=“火星”
str =1x8字符串列1到6“地球”“木星”“海王星”“Jupitor”“火星”“地球”栏7到8 <缺失>“火星”
行星=分类(str)
行星=1x8分类柱1到6地球木星海王星木星火星火星7到8 <未定义>火星