主要内容

离散化

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

描述

例子

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

例子

YE=离散化(XN将数据划分为XN相同宽度的容器,并返回容器边E

例子

YE=离散化(X大调的,在那里X是日期时间数组还是持续时间数组X放入统一的大调的时间长度。大调的可以是标量持续时间calendarDuration,或时间单位。例如,[Y,E] =离散化(X,'小时')X按1小时的统一时间放入箱中。

例子

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

例子

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

例子

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

例子

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

例子

___=离散化(___“IncludedEdge”,一边,在那里一边“左”“对”,指定每个bin是否包括其右bin边或左bin边。例如,如果一边“对”,则每个bin包含右bin边,除了第一个包含两条边的Bin。在这种情况下,jbin包含一个元素X(我)如果边(j) < X(i) <=边(j+1),在那里1 < j <= N而且N是箱子的数量。第一个箱子包括左边缘,这样它包含edges(1) <= X(i) <= edges(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
Y =离散化(数据,边)
Y =1×10南南1 1 3 2 4 4 2 2

Y指示数据的每个元素属于哪个bin。因为值1在垃圾箱的范围之外,Y包含这些元素的值。

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

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

用2016年的随机日期创建一个10乘1的日期时间向量。然后,将datetime值按月分组,并将结果作为分类数组返回。

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

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

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

X = hours(abs(randn(1,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 =10 x1分类[0小时,1小时)[1小时,2小时)[2小时,3小时)[0小时,1小时)[0小时,1小时)[0小时,1小时)[1小时,2小时)[0小时,1小时)[0小时,1小时)[0小时,1小时)[3小时,4小时][2小时,3小时)

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

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

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

Y =离散化(X,“小时”“分类”“hh: mm: ss”
Y =10 x1分类(就是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 = randi(100,1,10);边= 0:25:100;值=边(2:结束);Y =离散化(X,边,值)
Y =1×10100 100 25 100 75 25 50 75 100 100

使用“IncludedEdge”输入以指定每个数据仓包含其右数据仓边。第一个bin包含两条边。将结果与左bin边的默认包含进行比较。

X = 1:2:11;边= [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);边= std(X)*(-3: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.默认情况下,每个bin包括左bin边,除了最后一个bin,它包括两个bin边。

边缘至少要有两个元素,因为边(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通常不会落在箱子的边缘。如果数据分布不均匀,那么中间的一些箱子可以是空的。但是,第一个和最后一个bin总是包含至少一段数据。

例子:[Y,E] =离散化(X,5)将数据分布在X分成5个均匀宽度的箱子。

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

如果你指定大调的,然后离散化最多可使用65,536个箱子(或216).如果指定的bin持续时间需要更多的bin,则离散化使用与最大箱数对应的较大箱宽。

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

日期时间或持续时间值

每个箱子是1秒。

“一分钟”

日期时间或持续时间值

每个箱子是1分钟。

“小时”

日期时间或持续时间值

每个箱子是1小时。

“天”

日期时间或持续时间值

  • 对于datetime输入,每个bin是1个日历日。该值表示日光节约时间的变化。

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

“周”

Datetime值

每个箱子是一个日历周。
“月”

Datetime值

每个箱子是一个日历月。
“季”

Datetime值

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

日期时间或持续时间值

  • 对于datetime输入,每个bin是1个日历年。这个值表示闰日。

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

“十年”

Datetime值

每个箱子是10年(10个日历年)。
“世纪”

Datetime值

每个箱子代表一个世纪(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

数据类型:细胞

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

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

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

例子:Y =离散化(randi(11,10,1),1:2:11,' includedge ','right')包括每个箱子中的右箱子边。

输出参数

全部折叠

箱子,作为数字矢量、矩阵、多维数组或有序分类数组返回。Y尺寸和X,每个元素描述了中相应元素的bin位置X.如果的数据类型,则Y.根据输出的数据类型,超出范围的元素的表达方式不同:

  • 对于数值输出,Y包含中的超出范围元素的值X(X(i) < edges(1)X(i) >条边(end)),或在X包含一个

  • 如果Y是分类数组,则它包含超出范围的未定义元素或输入。

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

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

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

全局默认格式

28 - 1月- 2016 10:32:06

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

全局默认日期格式

28日- 1月- 2016

“周”

[global_default_date_format, global_default_date_format)

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

“月”

“MMM-uuuu”

2016年6月,

“季”

“回调哦哦”

2015年第四季度

“年”

“哦哦”

2016

“十年”

”(哦哦哦哦)

(2010, 2020)

“世纪”

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

E作为行向量返回离散化计算箱子边。如果传入bin边,那么E控件的方向边缘输入。

提示

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

扩展功能

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

版本历史

在R2015a中引入