function [P] = cumulprod(X, dim)
% function [P] = cumulprod(X, dim) 
% 
% Diese Funktion berechnet und speichert spaltenweise (dim = 1) oder 
% zeilenweise (dim = 2) die kumulativen Produkte der 
% Elemente einer Matrix X.

P = [];
if isempty(X) 
    return;
end

if (nargin < 2) 
    dim = 1;
end

if ((dim ~= 1) & (dim ~= 2)) 
    error('Dimensionsfehler !!');
    return;     
elseif ((size(X,1) == 1) & (size(X,2) > 1) & (dim == 1)) | ((size(X,2) == 1) & (size(X,1) > 1) & (dim == 2))
    error('Dimensionsfehler !!');
    return;
end
    
if (dim == 2) 
    X = X';
end

P = ones(size(X));
for i=1:size(X,2)
    P(1,i) = X(1,i);
    for j=2:size(X,1)
        P(j,i) = P(j-1,i)*X(j,i);
    end
end

if (dim == 2) 
    X = X';
    P = P';
end
