主要内容

Accumaray

积累向量元素

描述

实例

B=Accumaray(印第安纳州,数据)对数据组进行求和积累的元素一个向量的数据根据中指定的组印第安纳州。然后计算各组的总和。中的值印第安纳州定义数据所属的组和输出数组中的索引B存储每个组总和的位置。

若要按顺序返回组和,请指定印第安纳州作为一个向量。然后是带索引的组,Accumaray返回其总和(单位为)B(我)例如我f[1 1 2 2]'数据= [1 2 3 4]'然后B = accumarray(印第安纳州、数据)返回列向量B = [3 7]'

若要以另一种形式返回组和,请指定印第安纳州作为一个矩阵M——- - - - - -N矩阵印第安纳州,每一行表示分组分配和一个N-dimension索引进入输出B例如我f印第安纳州包含表单的两行[3 4],然后是数据存储在的(3,4)元素中B

的元素B其索引未显示在中印第安纳州充满了0默认情况下。

实例

B=Accumaray(印第安纳州,数据,深圳)返回一个数组B垫尺寸深圳具体说明深圳中匹配或超过维度长度的正整数向量印第安纳州.输出中的额外元素填充为0具体说明深圳[]让指数进来印第安纳州确定输出的大小。

实例

B=Accumaray(印第安纳州,数据,深圳,享乐)应用函数享乐每一组数据指定的印第安纳州具体说明享乐使用@符号,如@mean,或者[]使用默认值@sum

实例

B=Accumaray(印第安纳州,数据,深圳,享乐,fillval)填充的所有元素B没有被索引引用的印第安纳州用标量值fillval具体说明fillval[]使用默认值0

实例

B=Accumaray(印第安纳州,数据,深圳,享乐,fillval,issparse)返回一个数组B那是稀疏的当issparse真正的1.,以及充分的ifissparse错误的0.输出B默认情况下已满。

例子

全部崩溃

创建数据向量和相应的向量印第安纳州这定义了组。

data = (1:6)
资料=6×11 2 3 4 5 6
[1 3 4 2 4 1]'
印第安纳州=6×11 3 4 2 4

将这些值相加数据印第安纳州

B = accumarray(印第安纳州、数据)
B =4×17 4 2 8

另外,使用组摘要函数,指定“和”作为群体计算。

B=组摘要(数据、索引、,“和”)
B =4×17 4 2 8

创建一个组向量。

[1 1 4 2 4 3]';

对数值进行标量展开1.计算中定义的每个组中的元素数印第安纳州

B=accumarray(印度,1)
B =4×12 1 1 2

另外,使用组数函数。

B = groupcounts(印第安纳州)
B =4×12 1 1 2

创建一个数据向量和一个输出指数矩阵印第安纳州这定义了数据组。

数据=1:6
资料=1×61 2 3 4 5 6
Ind = [1 1;2 2;3 - 2;1 1;2 2;4 (1)
印第安纳州=6×21 1 2 2 3 2 1 1 2 2 4 1

将这些值相加数据每一组印第安纳州.的指标印第安纳州为输出定义一个4乘2的位置矩阵。

B1=accumarray(ind,数据)
B1=4×25 0 0 7 0 3 6 0

通过将输出大小指定为,将输出填充到4×4矩阵(4 - 4)

B2 = accumarray(ind,data,[4 4])
B2=4×45 0 0 0 0 7 0 0 0 3 0 0 6 0 0 0

计算组差异,而不是求和。

创建数据向量和矩阵印第安纳州它定义了数据组。

数据= [100.1 101.2 103.4 102.8 100.9 101.5]'
资料=6×1100.1000 101.2000 103.4000 102.8000 100.9000 101.5000
ind=[11;11;22;32;22;32]
印第安纳州=6×21 1 1 1 2 2 3 2 2 2 3 2

通过指定函数句柄来计算每个组的方差@var作为方法的输入。此语法应用于var将函数分配给组,而不是总和

B1 = accumarray(印第安纳州、数据[],@var)
B1=3×20.6050 0 0 3.1250 0 0.8450

可以将组计算指定为接受向量输入并返回标量的匿名函数。当您想要向函数传递额外的参数时,这是非常有用的。例如,使用thevar函数带有标准化参数值1.

A2 = accumarray(ind,data,[],@(x) var(x,1)))
A2 =3×20.3025 0 0 1.5625 0 0.4225

指定一个附加参数到总和函数,方法输入使用匿名函数。

创建数据向量和矩阵印第安纳州定义输出中的数据组和3-D索引。

data = int8 (15)
资料=1x6 int8行向量10 11 12 13 14 15
Ind = [1 1 1;1 1 1;1 1 2;1 1 2;2 3 1;2 3 2]
印第安纳州=6×31 1 1 1 1 1 1 1 2 1 1 2 2 3 1 2 3 2

在原生整数类中按组对数据求和int8通过使用“本地”选择总和函数。为此,请指定一个匿名函数@ (x)和(x,“本地”)对于方法输入。结果是类型为的2×3×2多维数组int8

B=accumarray(ind,数据,[],@(x)和,“本地”))
B =2 x3x2 int8数组B(:,: 1) = 21 0 0 0 0 14 B(:,: 2) = 25 0 0 0 0 15

创建数据向量和矩阵印第安纳州它定义了数据组。

data = 1:10
资料=1×101 2 3 4 5 6 7 8 9 10
Ind = [1 1;1 1;1 1;1 1;2 1;2 1;2 1;2 1;2 1;2 2]
印第安纳州=10×21 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 2

将元素分组数据进入单元格数组。

B = accumarray(ind,data,[],@(x) {x})
B=2×2单元阵列{4x1 double} {0x0 double} {5x1 double} {[10]}

确认向量元素的顺序与它们在中的显示顺序相同数据

B{2,1}
ans=5×15 6 7 8 9

创建数据向量和矩阵印第安纳州它定义了数据组。

数据= (101:106)'
资料=6×1101 102 103 104 105 106
Ind = [1 1;2 2;3 3;1 1;2 2;4 4]
印第安纳州=6×21 1 2 2 3 3 1 1 2 2 4 4

的元素印第安纳州为输出定义一个4 × 4矩阵,但只引用16个元素中的4个。默认情况下,其他12个元素是0在输出中。用价值观而不是0

B = accumarray(印第安纳州、数据[][],南)
B =4×4205南南南南207南南南103南南南106

创建数据向量和矩阵印第安纳州它定义了数据组。

数据= [34 22 19 85 53 77 99 6];Ind = [1 1;400 400;80 80;1 1;400 400;400 400;80 80;1 (1)
印第安纳州=8×21 1 400 400 80 80 1 1 400 400 400 400 80 80 1 1

的元素印第安纳州为输出定义一个400 × 400的矩阵,但仅引用160,000个元素中的3个。当输出Accumaray结果在非零元素密度低的大数组中,可以通过指定issparse选择真正的,创建一个稀疏矩阵而不是一个完整矩阵。

B=accumarray(ind,数据,[],[],[],[],真)
B = (1,1) 125 (80,80) 118 (400,400) 152

输入参数

全部崩溃

输出索引,指定为向量的向量、矩阵或单元格数组。

  • 如果印第安纳州是vector,则每个元素指定输出中的索引,并定义按Accumaray.所有的元素必须是正整数,并且长度为印第安纳州必须与数据向量的长度匹配。

  • 如果印第安纳州是一个M——- - - - - -N矩阵,然后每一行指定一个N-dimension索引进入输出。这个第四排印第安纳州对应于数据中的th值和数据中的行数印第安纳州必须与数据向量的长度匹配。例如,如果印第安纳州是一个3 × 2矩阵,它包含三个二维指标。每一行的第一个元素是输出的行索引,第二个元素是列索引。

  • 如果印第安纳州是索引向量的单元格数组,则每个向量必须具有相同的长度,并且它们被视为列。

要积累的数据,指定为标量或向量。

  • 如果数据是标量,则其值是展开的标量。

  • 如果数据是向量,则其长度必须与索引数组中的行数相同。

输出数组的大小,指定为正整数向量或[]例如Sz = [5 7]生成一个5乘7的输出数组。当你指定[]对于大小,索引数组中的值决定输出的大小。尺寸长度深圳必须匹配或超过索引数组中的维度长度。

组计算,指定为函数句柄。Accumaray按组累积数据向量的元素,然后应用该函数享乐到组元素。当你指定有趣= [],计算使用默认函数总和.指定的函数必须接受列向量并返回一个数字,必然的,或字符标量,还是标量单间牢房.有关函数句柄的更多信息,请参见创建函数处理

例子:有趣= @max

当输出元素与索引数组中提供的索引(指定为标量或)不对应时,填充值[],使用默认值0.的数据类型fillval必须与计算函数输出的数据类型匹配。

输出稀疏性,指定为数字或逻辑1.(真正的)或0(错误的).

issparse真正的1.,则填充值必须为0[],且计算函数的输入数据和输出数据都必须具有类型

输出参数

全部崩溃

输出数组,作为向量、矩阵或多维数组返回。B具有与组计算函数返回的值相同的数据类型。

当尺寸B如果未指定,则输出大小取决于索引数组印第安纳州

  • 如果印第安纳州是列向量吗B是长度的列向量马克斯(印第安纳州,[],1)

  • 如果印第安纳州一个矩阵有多个列吗B多维数组是否有大小马克斯(印第安纳州,[],1)

更多关于

全部崩溃

积累元素

下图说明了……的行为Accumaray在一个12个月的温度数据向量上。要找到每个月的最高温度读数,Accumaray应用最大值函数中每组值温度它们有相同的指标

没有值指向输出的5、6、7或10个位置。这些元素是0默认情况下,在输出中。

提示

  • 的行为Accumaray有类似的功能吗组摘要组数用于按组计算汇总统计信息,并分别计算组中的元素数。有关MATLAB中的更多分组功能®看见数据预处理

  • 的行为Accumaray也类似于历史记录函数。

    • 历史记录使用箱边将连续值分组到一维范围。Accumaray组数据使用N维指数。

    • 历史记录只能返回箱数和箱位。Accumaray可以对数据应用任何函数。

    你可以模仿历史记录使用Accumaray具有数据=1

  • 这个稀疏的函数也具有与之相似的累积行为Accumaray

    • 稀疏的使用二维指数分组数据,然而Accumaray组数据使用N维指数。

    • 对于具有相同索引的元素,稀疏的应用总和功能(用于价值观)或任何功能(用于必然的值),并在输出矩阵中返回标量结果。Accumaray默认情况下是求和,但可以对数据应用任何函数。

扩展功能

之前介绍过的R2006a