这个例子展示了如何创建分类数组。分类
是一种数据类型,用于存储具有来自有限离散类别集的值的数据。这些类别可以有一个自然的顺序,但这不是必需的。分类数组提供了高效的数据存储和方便的数据操作,同时还为值维护有意义的名称。分类数组通常用于表中定义行组。
默认情况下,分类数组包含没有数学顺序的类别。例如,宠物类别的离散集{'狗' '猫' '鸟'}
没有有意义的数学排序,所以MATLAB®使用字母排序{'鸟' '猫' '狗'}
.序数分类数组包含具有有意义的数学顺序的类别。例如,大小类别的离散集{'小','中','大'}
有数学顺序小号<中号<大号
.
从字符向量的单元格数组或字符串数组创建分类数组时,将删除前导空格和尾随空格。例如,如果您指定文本{'cat' 'dog'}作为类别,那么当您将它们转换为类别时,它们就变成了{'cat' 'dog'}。
您可以使用分类
函数从数值数组、逻辑数组、字符串数组、字符向量单元格数组或现有分类数组创建分类数组。
创建包含新英格兰州名的字符向量的1 × 11单元格数组。
状态= {“马”,“我”,“CT”,“v”,“我”,“NH”,“v”,“马”,“NH”,“CT”,“扶轮”};
转换单元格数组,状态
,到一个没有数学顺序的分类数组。
状态=分类的(状态)
状态=1x11分类数组第1至9列MA ME CT VT ME NH VT MA NH第10至11列CT RI
类(状态)
Ans =“绝对的”
在变量中列出离散类别状态
.
类别(状态)
ans =6x1单元阵列{' ct '} {' ma '} {' me '} {' nh '} {' ri '} {' vt '}
这些类别是按字母顺序排列的。
创建包含8个对象大小的字符向量的1 × 8单元格数组。
AllSizes = {“媒介”,“大”,“小”,“小”,“媒介”,...“大”,“媒介”,“小”};
单元格数组,AllSizes
,有三个不同的值:“大”
,“媒介”
,“小”
.对于字符向量的单元格数组,没有方便的方法来表明这一点小号<中号<大号
.
转换单元格数组,AllSizes
,转换为有序分类数组。使用valueset
要指定值小
,媒介
,大
,定义类别。对于序数分类数组,指定的第一个类别为最小类别,最后一个类别为最大类别。
Valueset = {“小”,“媒介”,“大”};sizeOrd = categorical(所有大小,值集,“顺序”,真正的)
sizeOrd =1x8分类数组第1至6列中,大,小,小,中,大第7至8列中,小
类(sizeOrd)
Ans =“绝对的”
分类数组中值的顺序,sizeOrd
,保持不变。
在分类变量中列出离散类别,sizeOrd
.
类别(sizeOrd)
ans =3x1单元阵列{'小'}{'中'}{'大'}
类别以指定的顺序列出,以匹配数学顺序小号<中号<大号
.
创建100个0到50之间的随机数向量。
X =兰特(100,1)*50;
使用离散化
函数通过对的值进行分组来创建分类数组x
.把0到15之间的所有值放到第一个箱子里,把15到35之间的所有值放到第二个箱子里,把35到50之间的所有值放到第三个箱子里。每个bin包含左端点,但不包括右端点。
猫名= {“小”,“媒介”,“大”};binnedData =离散化(x,[0 15 35 50],“分类”, catnames);
binnedData
一个100乘1的有序分类数组有三个类别,这样吗小号<中号<大号
.
使用总结
函数打印每个类别中的元素数量。
总结(binnedData)
小30中35大35
方法创建字符串数组,从R2016b开始字符串
函数并将它们转换为分类数组。
创建一个包含行星名称的字符串数组。
STR =字符串({“地球”,“木星”,“海王星”,“木星”,“火星”,“地球”})
str =1x6字符串数组地球,木星,海王星,木星,火星,地球
转换str
到一个分类数组。
行星=分类(str)
行星=1x6分类数组地球木星海王星木星火星地球
将缺失元素添加到str
然后把它转换成一个分类数组。在哪里str
有缺失值,行星
具有未定义的值。
str (8) =“火星”
str =1x8字符串数组第1至6列“地球”“木星”“海王星”“木星”“火星”“地球”第7至8列<缺失>“火星”
行星=分类(str)
行星=1x8分类数组第1至6列地球木星海王星木星火星地球第7至8列<未定义>火星