Rev | Line | |
---|
[37] | 1 | function sub = ind2subv(siz,index)
|
---|
| 2 | %IND2SUBV Subscript vector from linear index.
|
---|
| 3 | % IND2SUBV(SIZ,IND) returns a vector of the equivalent subscript values
|
---|
| 4 | % corresponding to a single index into an array of size SIZ.
|
---|
| 5 | % If IND is a vector, then the result is a matrix, with subscript vectors
|
---|
| 6 | % as rows.
|
---|
| 7 |
|
---|
| 8 | % Written by Tom Minka
|
---|
| 9 | % (c) Microsoft Corporation. All rights reserved.
|
---|
| 10 |
|
---|
| 11 | n = length(siz);
|
---|
| 12 | cum_size = cumprod(siz(:)');
|
---|
| 13 | prev_cum_size = [1 cum_size(1:end-1)];
|
---|
| 14 | index = index(:) - 1;
|
---|
| 15 | sub = rem(repmat(index,1,n),repmat(cum_size,length(index),1));
|
---|
| 16 | sub = floor(sub ./ repmat(prev_cum_size,length(index),1))+1;
|
---|
| 17 |
|
---|
| 18 | % slow way
|
---|
| 19 | %for dim = n:-1:1
|
---|
| 20 | % sub(:,dim) = floor(index/cum_size(dim))+1;
|
---|
| 21 | % index = rem(index,cum_size(dim));
|
---|
| 22 | %end
|
---|
Note: See
TracBrowser
for help on using the repository browser.