主要内容

分类

包含分配给类别的值的数组

描述

分类是否将值赋给离散类别的有限集合的数据类型,例如地中海,.这些类别可以有您指定的数学顺序,例如High > Med > Low,但这不是必需的。分类数组为非数字数据提供了高效的存储和方便的操作,同时还为值维护了有意义的名称。分类数组的一种常见用法是在表中指定行组。

创建

描述

例子

B =分类(一个从数组创建类别数组一个.的类别B排序的值是唯一的吗一个

例子

B =分类(一个valueset中的每个值创建一个类别valueset.的类别B与值的顺序相同吗valueset

您可以使用valueset中未出现的值包含类别一个.相反,如果一个包含中未出现的任何值valueset,则对应元素B是未定义的。

例子

B =分类(一个valuesetcatnames将类别命名为B中匹配类别值valueset名字在catnames

例子

B =分类(一个___名称,值创建具有由一个或多个指定的附加选项的分类数组名称,值对参数。可以在前面的语法中包含任何输入参数。

例如,要指示类别具有数学排序,请指定“顺序”,真的

输入参数

全部展开

输入数组,指定为数字数组、逻辑数组、类别数组、日期时间数组、持续时间数组、字符串数组或字符向量的单元格数组。

分类从字符串或字符向量的输入值中删除前导和尾随空格。

如果一个包含缺失的值,然后对应的元素B未定义,并显示为<定义>.的分类函数将以下值转换为未定义的分类值:

  • 在数字和持续时间数组中

  • 缺失的字符串(< >失踪)或空字符串("")在字符串数组中

  • 空字符vector ('')在字符向量的单元数组中

  • NaTdatetime数组

  • 未定义的值(<定义>)

B没有未定义值的类别。若要为缺少或未定义的值创建显式类别,必须将所需类别名称包含在catnames中对应的值valueset

一个也可以是一个具有以下类方法的对象数组:

  • 独特的

  • 情商

类别,指定为唯一值的向量。的数据类型valueset的数据类型一个必须是一样的,除了什么时候一个是一个字符串数组。在这种情况下,valueset可以是字符串数组,也可以是字符向量的单元格数组。

分类的元素中删除前导和尾随的空格valueset也就是字符串或字符向量。

类别名称,指定为字符向量的单元格数组或字符串数组。如果不指定catnames输入参数,然后分类使用valueset类别名称。

合并多个不同的值一个进入一个单独的类别B,包含与这些值对应的重复名称。

名称-值对的观点

指定可选的逗号分隔对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按如下顺序指定几个名称和值对参数Name1, Value1,…,的家

例子:“顺序”,真的指定类别具有数学排序。

序号变量指示符,由逗号分隔的一对组成“顺序”,要么0)或真正的1).

0

分类创建非序号的分类数组,这是默认行为。

的类别B没有数学排序。因此,您可以比较B仅供平等。不能使用任何其他关系操作符比较值。

真正的1

分类创建一个有序分类数组。

的类别B有一个数学排序,这样指定的第一个类别是最小的,最后一个类别是最大的。中比较的值B除了比较值是否相等外,还可以使用关系操作符,如小于和大于。也可以使用最小值马克斯顺序分类数组上的函数。

有关更多信息,请参见顺序分类数组

保护类别指示器,指定为逗号分隔的对,由“保护”,要么0)或真正的1).序号类别数组的类别总是受到保护。默认值为真正的当你指定“顺序”,真的.否则,取值为

0

赋新值给B,类别自动更新。因此,您可以组合(非序号)具有不同类别的类别数组。类别可以相应地更新,以包含来自两个数组的类别。

真正的1

赋新值给B,值必须属于现有类别之一。因此,您只能组合具有相同类别的数组。添加新类别B,必须使用该函数addcats

例子

全部折叠

创建具有气象站标签的分类数组。把它添加到温度读数表中。然后使用分类按站选择温度读数。

首先,创建包含温度读数、日期和车站标签的数组。

临时工= [58;72;56;90;76);日期= {“2017-04-17”“2017-04-18”“2017-04-30”“2017-05-01”“2017-04-27”};站= {“S1 '“S2”“S1 '“S3”“S2”};

转换到分类数组。

站=分类(站)
站=5 x1分类S1 s2 S1 s3 s2

显示类别。三个车站的标签是类别。

类别(站)
ans =3 x1细胞{' S1 '} {S2的}{S3的}

创建一个包含温度、日期和站点标签的表。

T =表(临时工、日期、站)
T =5×3表临时工日期站  _____ ______________ ________ 58{‘2017-04-17’}S1 72{‘2017-04-18’}S2 56{‘2017-04-30’}S1 90{‘2017-05-01’}S3 76{‘2017-04-27’}S2

显示从车站获得的读数S2.你可以使用==运算符来求值这等于S2.然后使用逻辑索引选择包含站点数据的表行S2

TF = (T.Stations ==“S2”);T (TF,:)
ans =2×3表临时工日期站  _____ ______________ ________ 72{‘2017-04-18’}S2 76{‘2017-04-27’}S2

转换字符向量的单元格数组一个到分类数组。指定包含中不存在的值的类别列表一个

创建字符向量的单元格数组。

一个= {“共和党人”“民主党人”“民主党人”“民主党人”“民主党人”“共和党人”};

转换一个到分类数组。为独立的

valueset = {“民主党人”“共和党人”“独立”};valueset B =分类(一)
B =3 x2分类共和党,民主党,民主党,民主党,共和党

显示类别B

类别(B)
ans =3 x1细胞{'democrat'} {'republican'} {'independent'}

创建一个数字数组。

A = [1 3 2;2 1 3;3一2)
一个=3×31 3 2 2 1 3 3 1 2

转换一个分类数组B并指定类别名称。

B = categorical(A,[1 2 3],{)“红色”“绿色”“蓝”})
B =3 x3的分类红蓝绿绿红蓝蓝红绿

显示类别B

类别(B)
ans =3 x1细胞{“红”}{“绿”}{“蓝”}

B不是序数分类数组。因此,您可以比较B只使用相等操作符,==~ =

找到属于该类别的元素“红色”.使用逻辑索引访问这些元素。

Tf = (b ==“红色”);B (TF)
ans =3 x1分类红红红

创建一个5乘2的数字数组。

A = [3 2;3 3;3 2;2 1;3 2]
一个=5×23 2 3 3 3 2 1 3 2

转换一个到一个有序类别数组12,3.代表类别孩子成人,高级分别。

valueset = [1:3];catnames = {“孩子”“成人”“高级”};B =分类(A valueset catnames,“顺序”,真正的)
B =5 x2分类老年人,老年人,老年人,老年人,老年人,老年人,老年人,老年人,老年人,老年人

B是序数的,范畴的B有一个数学顺序,儿童<成人<老年人

从R2017a开始,您可以使用双引号创建字符串数组。另外,字符串数组可以有缺失的值,显示为< >失踪,不加引号。

str = [“平面”“喷气机”“平面”“直升飞机”失踪,“喷气机”
str =1 x6字符串"plane" "jet" "plane" "helicopter"  "jet"

转换字符串数组str到分类数组。的分类函数将缺少的字符串转换为未定义的分类值,显示为<定义>

C =分类(str)
C =1 x6分类Plane jet Plane helicopter飞机直升飞机

使用离散化函数(而不是分类),把100个随机数分成三类。

x =兰德(100 1);Y =离散化(x,[0 .25 .75 1],“分类”, {“小”“媒介”“大”});总结(y)
小号22中号46大号32

提示

  • 有关接受或返回分类数组的函数列表,请参见分类数组

  • 如果输入数组的数值、日期时间或持续时间值太接近,则分类函数将它们截断为重复的值。例如,分类(1.00001 [1])截断输入数组的第二个元素。要从数字数据创建类别,请使用离散化函数。

选择

您还可以使用离散化

扩展功能

介绍了R2013b