Code covered by the BSD License  

Highlights from
The JSR toolbox

image thumbnail
from The JSR toolbox by Raphael Jungers
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