主要内容

离散化

将数据分组到箱子或类别中

描述

例子

Y=离散化(X边缘返回包含的元素的容器的索引X.的jTh bin包含元素X(我)如果边(j) <= X(i) <边(j+1)1 <= j < N,在那里N是箱的数量和长度(边缘)= N + 1.最后一个箱子包含这两条边(N) <= X(i) <= N+1)

例子

YE) =离散化(XN将数据分成XN等宽的箱,并返回箱边E

例子

YE) =离散化(X大调的,在那里Xdatetime或duration数组是否分X放入统一的箱大调的的时间长度。大调的可以是标量持续时间calendarDuration,或时间单位。例如,[Y, E] =离散化(X,“小时”)X在1小时内均匀放入箱中。

例子

___) =离散化(___返回相应的元素而不是bin编号,使用任何以前的输入或输出参数组合。例如,如果X (1)是在5号仓里吗Y (1)值(5)而不是5必须是一个长度等于容器数的向量。

例子

___) =离散化(___“分类”)创建一个类别数组,其中每个容器都是一个类别。在大多数情况下,默认的类别名称的形式是“[A, B)”(或“[A, B]”最后一个箱子)一个B是连续的箱边。如果您指定大调的作为字符向量,默认类别名可能具有特殊格式。看到Y查看显示格式的列表。

例子

___) =离散化(___“分类”,displayFormat,对于datetime或duration数组输入,在输出的类别名称中使用指定的datetime或duration显示格式。

例子

___) =离散化(___“分类”,categoryNames也命名的类别Y使用字符向量的单元格数组,categoryNames.的长度categoryNames必须等于箱子的数量。

例子

___) =离散化(___“IncludedEdge”,一边,在那里一边“左”“对”,指定每个容器是否包含其右容器边或左容器边。例如,如果一边“对”,则每个箱子包括右箱子边,除了第一个包含两条边的箱子。在这种情况下j这个箱子包含一个元素X(我)如果边(j) < X(i) <=边(j+1),在那里1 < j <= NN为箱子的数量。第一个容器包含它所包含的左边缘边(1)<= X(i) <=边(2).的默认值一边“左”

例子

全部折叠

使用离散化将数值分组到离散的容器中。边缘定义了5个箱子边,所以有4个箱子。

数据= [1 1 2 3 6 5 8 10 4 4]
data =1×101 1 2 3 6 5 8 10 4 4
边缘= 2:2:10
边缘=1×52 4 6 8 10
Y =离散化(数据、边缘)
Y =1×10南楠1 1 3 2 4 4 2 2

Y指示每个数据元素属于哪个容器。由于价值1不在垃圾箱的范围内Y包含这些元素的值。

将随机数据分组到三个箱子里。指定第二个输出以返回计算得到的仓边离散化

X = randn (10, 1);[Y, E] =离散化(X, 3)
Y =10×12 2 1 2 2 1 1 2 3 2
E =1×43 0 3 6

创建一个10乘1的日期时间向量,其中包含2016年的随机日期。然后,按月对datetime值进行分组,并以分类数组的形式返回结果。

X = datetime(2016 1,兰迪(365、10、1))
X =10 x1 datetime24- 10 -2016 26- 11- 2016 16- 2 -2016 29- 11- 2016 18- 8- 2016 05- 2 -2016 11- 4- 2016 18- 7 -2016 15- 12 -2016 18- 12 -2016
Y =离散化(X,“月”“分类”
Y =10x1分类2016年10月2016年11月2016年2月2016年11月2016年8月2016年2月2016年4月2016年7月2016年12月2016年12月

将持续时间值按小时分组,并以各种显示格式返回结果。

按小时对一些随机持续时间值进行分组,并将结果作为分类数组返回。

X =小时(abs (randn(10)))”
X =10 x1持续时间0.53767 hr 1.8339 hr 2.2588 hr 0.86217 hr 0.31877 hr 1.3077 hr 0.43359 hr 0.34262 hr 3.5784 hr 2.7694 hr
Y =离散化(X,“小时”“分类”
Y =10x1分类[0 hr, 1 hr) [1 hr, 2 hr) [2 hr, 3 hr) [0 hr, 1 hr) [1 hr, 1 hr) [0 hr, 1 hr) [0 hr, 1 hr) [0 hr, 1 hr) [0 hr, 1 hr) [3 hr, 4 hr] [2 hr, 3 hr)

将结果的显示更改为分钟数。

Y =离散化(X,“小时”“分类”“米”
Y =10x1分类[0分钟,60分钟)[60分钟,120分钟)[120分钟,180分钟)[0分钟,60分钟)[0分钟,60分钟)[60分钟,60分钟)[0分钟,60分钟)[0分钟,60分钟)[180分钟,240分钟][120分钟,180分钟)

再次更改格式,以小时、分钟和秒数显示。

Y =离散化(X,“小时”“分类”“hh: mm: ss”
Y =10x1分类(就是01:00:00)[01:00:00 02:00:00)[02:00:00 03:00:00)[就是01:00:00)[就是01:00:00)[01:00:00 02:00:00)[就是01:00:00)[就是01:00:00)[03:00:00 04:00:00][02:00:00 03:00:00)

使用每个容器的右边缘作为输入。每个bin中的元素值总是小于bin值。

X =兰迪(100 1 10);边缘= 0:25:100;值=边缘(2:结束);边缘,Y =离散化(X值)
Y =1×10100 100 25 100 75 25 50 75 100 100

使用“IncludedEdge”输入,指定每个容器包括其右容器边。第一个箱子包括两条边。将结果与默认包含的左bin边进行比较。

X = 1:2:11;Edges = [1 3 4 7 10 11];Y =离散化(X,边缘,“IncludedEdge”“对”
Y =1×61 1 3 3 4 5
Z =离散化(X,边缘)
Z =1×61 2 3 4 4 5

将数字数据分组到分类数组中。使用这个结果来确认与平均值相差1个标准差的数据量。

根据与均值的距离,用标准差来衡量,将正态分布的数据分组到箱子中。

X = randn (1000 1);边缘=性病(X) *(三3);Y =离散化(X,边缘,“分类”...“3σ”“2σ”“σ”“σ”“2σ”“3σ”});

Y中元素的未定义分类值X离均值3个标准差远。

预览Y

Y (1:15)
ans =15 x1分类西格玛2西格玛-3西格玛-2西格玛-西格玛<未定义> 3西格玛-2西格玛<未定义>西格玛-西格玛

确认大约68%的数据落在均值的一个标准差内。

nnz (Y = =“σ”| Y = =“σ”) /元素个数(Y)
ans = 0.6910

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。X包含要分发到容器中的数据。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|datetime|持续时间

Bin边,指定为一个数值递增的向量。箱子边可以包含连续的重复元素。连续的元素边缘形成离散的箱子离散化用于将数据分区X.默认情况下,每个箱子包括左边的箱子边,除了最后一个箱子,它包括两个箱子边。

边缘必须至少有两个元素,因为边(1)第一个箱子的左边是和吗边(结束)是最后一个箱子的右边。

例子:Y =离散化([1 3 5],[0 2 4 6])分配的值13.,5分成三个有边的箱子(0, 2)(2、4),(4、6)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|datetime|持续时间

容器的数量,指定为标量整数。

离散化将数据分为N宽度一致的箱子,选择箱子的边是重叠数据范围的“好”数字。中最大和最小的元素X一般不要正好落在垃圾桶边。如果数据分布不均匀,那么一些中间容器可能是空的。但是,第一个和最后一个容器总是包含至少一条数据。

例子:[Y, E] =离散化(X, 5)将数据分配到X放入5个宽度相同的箱子。

统一的bin持续时间,指定为标量持续时间calendarDuration,或作为表中的值之一。

如果您指定大调的,然后离散化可以使用最多65,536个垃圾桶(或216).如果指定的容器持续时间需要更多的容器,则离散化使用与最大箱数相对应的较大箱宽。

价值 适用于…… 描述
“第二”

日期时间或持续时间值

每个箱子是1秒。

“一分钟”

日期时间或持续时间值

每个垃圾桶为1分钟。

“小时”

日期时间或持续时间值

每个垃圾桶是1小时。

“天”

日期时间或持续时间值

  • 对于datetime输入,每个容器是1个日历天。这个值说明了夏令时转换。

  • 对于持续时间输入,每个仓是1个固定长度的天(24小时)。

“周”

Datetime值

每个垃圾桶是一个日历周。
“月”

Datetime值

每个垃圾箱是1个日历月。
“季”

Datetime值

每个箱子是1个日历季度。
“年”

日期时间或持续时间值

  • 对于datetime输入,每个容器是1个日历年。该值用于闰日。

  • 对于持续时间输入,每个bin为1个固定长度年(365.2425天)。

“十年”

Datetime值

每个垃圾桶是1个十年(10个日历年)。
“世纪”

Datetime值

每个垃圾桶是1个世纪(100个日历年)。

例子:[Y, E] =离散化(X,“小时”)X在1小时内均匀放入箱中。

数据类型:字符|持续时间|calendarDuration

Bin值,指定为任意数据类型的向量。必须和箱子的长度相同,长度(边缘)1.中的元素在输出中替换正常的bin索引。也就是说,如果X (1)属于本2,然后离散化返回Y (1)作为值(2)而不是2

如果是单元格数组,则所有输入数据必须属于一个bin。

例子:Y =离散化(randi(5,10,1),[1 1.5 3 5],diff([1 1.5 3 5]))返回容器的宽度,而不是1到3之间的索引。

日期时间和持续时间显示格式,指定为字符向量。的displayFormat值不改变中的值Y,只有他们的展示。您可以指定displayFormat对datetime和duration数组使用任何有效的显示格式。有关可用选项的更多信息,请参见设置日期和时间显示格式

例子:离散化(X,“天”、“分类”,“h”)指定持续时间数组的显示格式。

例子:离散化(X,“天”、“分类”、“yyyy-MM-dd”)指定datetime数组的显示格式。

数据类型:字符

类别数组类别名称,指定为字符向量的单元格数组。categoryNames长度必须等于容器的数量。

例子:Y =离散化(randi(5 10 1), 1.5[1 3 5],“分类”,{' A ' ' B ' ' C '})将数据分成三类,一个B,C

数据类型:细胞

在每个容器中包含的边,指定为以下值之一:

  • “左”-所有箱子包括左边的箱子边,除了最后一个箱子,它包括了两边的边。这是默认值。

  • “对”-所有的箱子包括右边的箱子边,除了第一个箱子,它包括两条边。

例子:Y =离散化(randi(11 10 1), 1:2:11,‘IncludedEdge’,‘正确的’)包括每个容器的右容器边。

输出参数

全部折叠

Bins,以数字向量、矩阵、多维数组或有序分类数组的形式返回。Y大小是一样的吗X,每个元素描述中对应元素的bin位置X.如果,则数据类型为Y是一样的.超出范围的元素的表达方式取决于输出的数据类型:

  • 数字输出,Y包含中范围外元素的值X(X(我)<边缘(1)X(我)>边缘(结束)),或X包含一个

  • 如果Y是一个分类数组,则它包含超出范围或投入。

  • 如果是一个整数数据类型的向量吗Y包含0超出范围或投入。

默认类别名称格式为Y的语法离散化(X,大调的“直言”)是:

的价值大调的 默认类别名称格式 格式示例
“第二”

全局缺省格式

28 - 1月- 2016 10:32:06

“一分钟”
“小时”
“天”

全局默认日期格式

2016年1月28日

“周”

[global_default_date_format, global_default_date_format)

[24 - 1月- 2016年1月30 - - 2016)

“月”

“MMM-uuuu”

2016年6月,

“季”

“回调哦哦”

2015年第四季度

“年”

“哦哦”

2016

“十年”

”(哦哦哦哦)

(2010, 2020)

“世纪”

Bin边,作为向量返回。指定此输出以查看该容器的边离散化计算在您没有显式传递箱边的情况下。

E以行向量的形式返回离散化计算箱边。如果你传入bin边,那么E保留的方向边缘输入。

提示

  • 的行为离散化是类似的histcounts函数。使用histcounts查找每个容器中元素的数量。另一方面,使用离散化查找每个元素属于哪个箱子(不计算)。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2015a