MATLAB Function Reference |
Construct an array with accumulation
Syntax
A = accumarray(ind, val)
A = accumarray(ind, val, sz)
A = accumarray(ind, val, sz, fun)
A = accumarray(ind, val, sz, fun, fillvalue)
Description
A = accumarray(ind, val)
creates an array A
from the elements of the vector val
, using the corresponding rows of ind
as subscripts into A
. val
must have the same length as the number of rows in ind
, unless val
is a scalar whose value is repeated for all the rows of ind
. If ind
is a nonempty column vector, then A
is a column vector of length max(ind)
. If ind
is a nonempty matrix with k
columns, then A
is a k
-dimensional array of size max(ind,[],1)
. If ind
is zeros(0,k)
with k>1
, then A
is the k
-dimensional empty array of size 0
-by-0
-by-...-by-0
. accumarray
accumulates by adding together elements of val
at repeated subscripts of A
. accumarray
fills in A
at unspecified subscripts with the value 0
.
A = accumarray(ind, val, sz)
creates an array of size sz
, where sz
is a row vector of nonnegative integer values. If ind
is a nonempty column vector, then sz
must be [n 1
] where n>=max(ind)
. If ind
is a nonempty matrix with k
columns, then sz
must be of length k
with all(sz>=max(ind,[],1))
. If ind
is zeros(0,k)
with k>1
, then sz
must be of length k
with all(sz>=0)
. Nonzero sz
resizes A
to a nonempty all-zero array.
A = accumarray(ind, val, sz, fun)
accumulates values at repeated subscripts of A
by applying the function fun
, which you specify by a function handle. fun
must accept a vector and return a scalar. For example, setting fun=@sum
produces the default behavior of accumarray
when you do not specify fun.
A = accumarray(ind, val, sz, fun, fillvalue)
where val
is full, fills in the values of A
at unspecified indices with the value fillvalue
. If ind
is empty, but sz
resizes A
to nonempty, then all the values of A
are fillvalue
.
Examples
The following command creates a vector, accumulating at the repeated index 2.
The following commands create a 3-dimensional array, accumulating at repeated subscript (2,3,4)
.
ind = [1 1 1; 2 1 2; 2 3 4; 2 3 4]; A = accumarray(ind,11:14) A(:,:,1) = 11 0 0 0 0 0 A(:,:,2) = 0 0 0 12 0 0 A(:,:,3) = 0 0 0 0 0 0 A(:,:,4) = 0 0 0 0 0 27
The following command repeats the scalar val = pi
for all the rows in ind
.
A = accumarray(ind,pi) A(:,:,1) = 3.1416 0 0 0 0 0 A(:,:,2) = 0 0 0 3.1416 0 0 A(:,:,3) = 0 0 0 0 0 0 A(:,:,4) = 0 0 0 0 0 6.2832
The following command does the default summation accumulation at the repeated subscript (5,5)
.
The following command increases the size of A
beyond max(ind,[],1)
.
The following command uses prod
instead of sum
as the accumulation function:
The following command uses max
as the accumulation function and fills the values at unspecified subscripts with -Inf
.
See Also
abs | acos |
© 1994-2005 The MathWorks, Inc.