| 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.