Code covered by the BSD License

# The JSR toolbox

### Raphael Jungers (view profile)

10 Oct 2011 (Updated )

Gathers and compares the best methods for the joint spectral radius computation

genPerms(n, deg, homogeneous)
```function X = genPerms(n, deg, homogeneous)

% GENPERMS Generation of all non-negative integer n-tuples of given (max) sum
%
%    X = genPerms(n, deg) returns a matrix containing all non-negative integer
%      n-tuples such that the sum of their components is <= deg. The n-tuples
%      will be lexicographically ordered.
%
%    X = genPerms(n, deg, 1) returns a matrix containing all non-negative
%      integer (n+1)-tuples such that the sum of their components is == deg.
%      The (n+1)-tuples will be lexicographically ordered.
%

X = generate(zeros(nck(n + deg, n), n), 1, deg, n, 1, zeros(1, n));

if (nargin == 3) && (homogeneous == 1),
X = [X, deg-sum(X, 2)];
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [X, i] = generate(X, i, deg_left, nb_var, cur, prefix)

if cur > nb_var,
X(i, :) = prefix;
i = i + 1;
else
for k=0:deg_left,
prefix(cur) = k;
[X, i] = generate(X, i, deg_left - k, nb_var, cur + 1, prefix);
end
end
end```

Contact us