39 lines
810 B
R
39 lines
810 B
R
|
|
ind2subv <- function(siz, ndx) stop("Needs translation")
|
||
|
|
# function sub = ind2subv(siz, ndx)
|
||
|
|
# % IND2SUBV Like the built-in ind2sub, but returns the answer as a row vector.
|
||
|
|
# % sub = ind2subv(siz, ndx)
|
||
|
|
# %
|
||
|
|
# % siz and ndx can be row or column vectors.
|
||
|
|
# % sub will be of size length(ndx) * length(siz).
|
||
|
|
# %
|
||
|
|
# % Example
|
||
|
|
# % ind2subv([2 2 2], 1:8) returns
|
||
|
|
# % [1 1 1
|
||
|
|
# % 2 1 1
|
||
|
|
# % ...
|
||
|
|
# % 2 2 2]
|
||
|
|
# % That is, the leftmost digit toggle fastest.
|
||
|
|
# %
|
||
|
|
# % See also SUBV2IND
|
||
|
|
|
||
|
|
# n = length(siz);
|
||
|
|
|
||
|
|
# if n==0
|
||
|
|
# sub = ndx;
|
||
|
|
# return;
|
||
|
|
# end
|
||
|
|
|
||
|
|
# if all(siz==2)
|
||
|
|
# sub = dec2bitv(ndx-1, n);
|
||
|
|
# sub = sub(:,n:-1:1)+1;
|
||
|
|
# return;
|
||
|
|
# end
|
||
|
|
|
||
|
|
# cp = [1 cumprod(siz(:)')];
|
||
|
|
# ndx = ndx(:) - 1;
|
||
|
|
# sub = zeros(length(ndx), n);
|
||
|
|
# for i = n:-1:1 % i'th digit
|
||
|
|
# sub(:,i) = floor(ndx/cp(i))+1;
|
||
|
|
# ndx = rem(ndx,cp(i));
|
||
|
|
# end
|