主要内容

accumarray

积累向量元素

描述

例子

B= accumarray (印第安纳州,数据)总结数据组积累的元素一个向量的数据根据组中指定印第安纳州。然后计算总和除以每组。中的值印第安纳州定义两组数据属于和输出数组中的索引B在每组和存储。

返回该集团资金,指定印第安纳州作为一个向量。然后用指数为该集团,accumarray回报的总和B(我)。例如,如果印第安纳州= [1 1 2 2]'数据= (1 2 3 4)',然后B = accumarray(印第安纳州、数据)返回列向量7 B = [3]

返回该集团资金在另一个形状,指定印第安纳州作为一个矩阵。对于一个——- - - - - -n矩阵印第安纳州每一行代表集团和一个任务n维索引到输出B。例如,如果印第安纳州包含表单的两行[3 - 4],那么相应的元素的总和数据存储在(3、4)的元素B

的元素B指数没有出现在谁的印第安纳州充满了0默认情况下。

例子

B= accumarray (印第安纳州,数据,深圳)返回一个数组B垫尺寸深圳。指定深圳作为一个正整数向量匹配或超越维度的长度印第安纳州。在输出中充满了额外的元素0。指定深圳作为[]让指数印第安纳州确定输出的大小。

例子

B= accumarray (印第安纳州,数据,深圳,有趣的)应用函数有趣的每一组在数据指定的印第安纳州。指定有趣的使用@符号,如@mean,或者[]使用默认的@sum

例子

B= accumarray (印第安纳州,数据,深圳,有趣的,fillval)填满所有的元素B不被索引印第安纳州与标量值fillval。指定fillval作为[]使用默认值0

例子

B= accumarray (印第安纳州,数据,深圳,有趣的,fillval,issparse)返回一个数组B时稀疏issparse真正的1,满issparse0。输出B在默认情况下是完整的。

例子

全部折叠

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

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

求和的值数据中指定的组印第安纳州

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

另外,使用groupsummary函数,指定“和”组计算。

B = groupsummary(数据、印第安纳州“和”)
B =4×17 4 2 8

创建一个向量组。

印第安纳州= [1 1 4 2 4 3]';

应用标量扩张数量1计算每组中定义的元素数量印第安纳州

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

另外,使用groupcounts函数。

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

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

data = 1:6
data =1×61 2 3 4 5 6
印第安纳州= [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(印第安纳州、数据)
B1 =4×25 6 0 0 7 0 3 0

垫一个4×4的输出矩阵通过指定输出大小(4 - 4)

B2 = accumarray(印第安纳州、数据4 [4])
B2 =4×47 5 0 0 0 0 0 0 0 3 0 0 6 0 0 0

计算组差异,而不是资金。

创建一个向量的数据和一个矩阵印第安纳州定义组的数据。

数据= (100.1 101.2 103.4 102.8 100.9 101.5)'
data =6×1100.1000 101.2000 103.4000 102.8000 100.9000 101.5000
印第安纳州= [1 1;1 1;2 2;3 - 2;2 2;3 2]
印第安纳州=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.8450 0

您可以指定组计算为一个匿名函数,它接受向量输入并返回一个标量。这是非常有用的,当你想附加参数传递给一个函数。例如,使用var归一化参数值的函数1

A2 = accumarray(印第安纳州、数据[],@ (x) var (x, 1))
A2 =3×20.3025 0 0 1.5625 0.4225 0

指定一个额外的参数总和函数使用一个匿名函数的输入方法。

创建一个向量的数据和一个矩阵印第安纳州定义组和3 d指数到输出的数据。

data = int8 (15)
data =1 x6 int8行向量10 11 12 13 14 15
印第安纳州= [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-by-3-by-2多维数组的类型int8

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

创建一个向量的数据和一个矩阵印第安纳州定义组的数据。

data = 1:10
data =1×101 2 3 4 5 6 7 8 9 10
印第安纳州= [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 2 1 2 1 2 1 2 1 2 1 2 2

组的元素数据单元阵列。

B = accumarray(印第安纳州、数据[],@ (x) {x})
B =2×2单元阵列{4 x1双}{0 x0双}{5 x1双}{[10]}

验证向量元素出现在相同的顺序数据

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

创建一个向量的数据和一个矩阵印第安纳州定义组的数据。

数据= (101:106)'
data =6×1101 102 103 104 105 106
印第安纳州= [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矩阵输出,但只有参考4 16个元素。默认情况下,其他12个元素0在输出。填写额外的输出元素值,而不是0

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

创建一个向量的数据和一个矩阵印第安纳州定义组的数据。

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

的元素印第安纳州定义一个400 -,- 400矩阵输出,但只有3的160000元素的引用。时的输出accumarray结果在一个大型数组和一个低密度的非零元素,您可以通过指定的节省内存issparse选择真正的创建一个稀疏矩阵,而不是一个满的。

B = accumarray(印第安纳州、数据[]、[][],真的)
B = (1,1) 125 (80、80) 118 (400400) 152

输入参数

全部折叠

输出指标,指定为一个向量,向量的矩阵、单元阵列。

  • 如果印第安纳州每个元素是一个矢量,然后指定一个索引到输出和定义了组织积累accumarray。所有的元素必须是正整数的长度印第安纳州必须匹配的数据向量的长度。

  • 如果印第安纳州是一个——- - - - - -n矩阵,然后指定每一行一个n维索引到输出。的th行印第安纳州对应于th值在数据的行数印第安纳州必须匹配的数据向量的长度。例如,如果印第安纳州是一个3×2矩阵,它包含三个二维指数。每一行的第一个元素是行索引到输出,第二个元素是列索引。

  • 如果印第安纳州单元阵列的索引向量,然后每个向量都必须有相同的长度,他们被视为列。

数据积累,指定为一个标量或矢量。

  • 如果数据是一个标量,那么它的值是标量扩展。

  • 如果数据是一个向量,那么它必须有相同的长度在索引数组的行数。

输出数组的大小,作为一个向量的正整数或指定[]。例如,深圳= 7 [5]5-by-7产生一个输出数组。当你指定[]的大小,索引数组中的值的大小确定输出。的尺寸长度深圳必须匹配或超越维度索引数组的长度。

组计算,指定为一个函数处理。accumarray积累数据向量的元素组,然后应用功能有趣的组元素。当你指定有趣= []计算使用默认的函数总和。指定的函数必须接受一个列向量和返回一个数字,逻辑,或字符标量或一个标量细胞。有关函数处理的更多信息,请参阅创建函数处理

例子:有趣= @max

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

产量稀少,指定为一个数字或逻辑1(真正的)或0()。

issparse真正的1,必须填满值0[],计算函数的输入数据和输出必须都有类型

输出参数

全部折叠

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

当的大小B没有指定,输出大小取决于索引数组印第安纳州

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

  • 如果印第安纳州用多个列是一个矩阵,然后呢B是一个多维数组的尺寸吗马克斯(印第安纳州,[],1)

更多关于

全部折叠

积累的元素

下面的图形说明了的行为accumarray一个向量的温度数据在12个月期间。找到每个月的最大温度读数,accumarray应用马克斯每一组值的函数温度相同的指标

没有值指出,5、6、7、10的位置输出。这些元素是0默认的输出。

提示

  • 的行为accumarray类似于功能groupsummarygroupcounts为计算汇总统计组和计算元素的数量在一个组,分别。在MATLAB中分组功能®,请参阅数据预处理

  • 的行为accumarray也是类似的吗histcounts函数。

    • histcounts组连续值调整到一个一维的范围内使用本边缘。accumarray组数据使用n维指数。

    • histcounts只能返回本计数和本位置。accumarray可以应用于任何函数的数据。

    你可以模仿的行为histcounts使用accumarray数据= 1

  • 稀疏的函数也有积累的行为相似accumarray

    • 稀疏的组数据用二维指标,而accumarray组数据使用n维指数。

    • 元素有相同的指标,稀疏的应用总和函数(值)或任何函数(逻辑值),并返回标量输出矩阵。accumarray总结在默认情况下,但可将任何函数应用于数据。

扩展功能

版本历史

之前介绍过的R2006a