Updated 7 Feb 2012
idx = sub2allind(sz, sub1, sub2, sub3, ... )
Like Matlab's sub2ind, sub2allind computes the equivalent linear indices for
given subscripts of an array with size SZ.
Unlike sub2ind, it computes a field of all combinations of
subscripts. So, instead of calling A( 2:3, 1, 4:11) you might
linIdx = sub2allind( size(A), 2:3, 1, 4:11 );
and then call A(linIdx) or A(linIdx(:)) or you reshape linIdx the way you need.
This is usefull whenever you want to access a subset of an array and compare it with a differently shaped thing, like
A(linIdx(:)) = A(linIdx(:)) + <1D-Vector>
Using the naked colon operator is allowed to reference an entire dimension:
linIdx = sub2allind( sz, :, sub2 );
Michael Völker (2023). sub2allind (https://www.mathworks.com/matlabcentral/fileexchange/30096-sub2allind), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: CATPAD, N-dimensional sparse arrays
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Added H1 line; fixed bug when asking for a column of indices only
* shape of output fits the adressed field now
* Implemented colon operator (Thanks to Matt J)