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
默认情况下。
例子
和数据组
创建一个向量的数据和相应的向量印第安纳州
定义组。
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
fillval
- - - - - -填值
[]
(默认)|标量
填满值时输出的一个元素不对应索引提供的索引数组,指定为一个标量或[]
使用默认值0
。的数据类型fillval
的数据类型必须匹配计算函数的输出。
issparse
- - - - - -产量稀少
假
或0
(默认)|真正的
或1
产量稀少,指定为一个数字或逻辑1
(真正的
)或0
(假
)。
当issparse
是真正的
或1
,必须填满值0
或[]
,计算函数的输入数据和输出必须都有类型双
。
输出参数
B
——输出数组
矩阵向量| |多维数组
输出数组,返回为一个向量,矩阵,或多维数组。B
具有相同的数据类型所返回的值计算函数。
当的大小B
没有指定,输出大小取决于索引数组印第安纳州
。
如果
印第安纳州
是一个列向量,然后呢B
是一个列向量的长度马克斯(印第安纳州,[],1)
。如果
印第安纳州
用多个列是一个矩阵,然后呢B
是一个多维数组的尺寸吗马克斯(印第安纳州,[],1)
。
更多关于
积累的元素
下面的图形说明了的行为accumarray
一个向量的温度数据在12个月期间。找到每个月的最大温度读数,accumarray
应用马克斯
每一组值的函数温度
相同的指标月
。
没有值月
指出,5、6、7、10的位置输出。这些元素是0
默认的输出。
提示
的行为
accumarray
类似于功能groupsummary
和groupcounts
为计算汇总统计组和计算元素的数量在一个组,分别。在MATLAB中分组功能®,请参阅数据预处理。的行为
accumarray
也是类似的吗histcounts
函数。histcounts
组连续值调整到一个一维的范围内使用本边缘。accumarray
组数据使用n维指数。histcounts
只能返回本计数和本位置。accumarray
可以应用于任何函数的数据。
你可以模仿的行为
histcounts
使用accumarray
与数据= 1
。的
稀疏的
函数也有积累的行为相似accumarray
。稀疏的
组数据用二维指标,而accumarray
组数据使用n维指数。元素有相同的指标,
稀疏的
应用总和
函数(双
值)或任何
函数(逻辑
值),并返回标量输出矩阵。accumarray
总结在默认情况下,但可将任何函数应用于数据。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
除非你提供明确的界限
accumarray
输入值,代码生成器可能无法预先确定的大小accumarray
输出。因此,必须启用适应可变数组和动态内存分配。输入参数不能包含枚举。
这个函数
有趣的
必须返回一个完整的(nonsparse)标量。当
有趣的
返回一个标量1×1单元阵列:你必须指定一个值
fillval
。您所指定的值必须是一个标量1×1单元阵列,和细胞的内容必须具有相同的数据类型有趣的
的回报。订单的累积值
有趣的
收到作为输入MATLAB的次序可能不匹配。
预先确定输出类型
有趣的
,代码生成器可以调用有趣的
前处理的输入参数accumarray
。因此,如果执行有趣的
引起副作用,例如通过修改全局或持续变量或打印输出,然后从MATLAB生成的代码的结果可能不同的结果。
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。万博1manbetx有关更多信息,请参见MATLAB函数线程环境中运行。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
的价值
有趣的
必须一个@sum
(默认),@prod
,@min
,@max
,@any
,或@all
。数据
和fillval
必须是完整的(nonsparse)逻辑
或浮点(双
或单
)数组。
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。