function [faktorausschlussmat,faktorfolgemat]=calcfaktorausschlussmat(anzahlfaktoren,stufenvec,anzahlelemente,zaehlmat)

%   calcfaktorausschlussmat

%   This software is protected by german copyright and international treaties.             
%   Copyright 2004 Markus Junghöfer & Peter Peyk. All Rights Reserved.                     
%                                                                                          
%   THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE        
%   NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,    
%   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE    
%   OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
%   TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT,       
%   INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE      
%   OR DOCUMENTATION. 


%calcfaktorausschlussmat(2,[3;3],9,zaehlmat)

faktorausschlussmat=cell(anzahlelemente,1);
faktorfolgemat=cell(anzahlelemente,1);
restanzahl=prod(stufenvec-1);
%Folgeelementmatrix bestimmen (pro Zeile alle möglichen Folgeelemente auf Zeilennummer)
alternativen=zeros(anzahlelemente,restanzahl);
evalstring='';
koords=zeros(anzahlfaktoren,1);
evalstring=['[koords(1)'];
for k=2:anzahlfaktoren
    evalstring=[evalstring,',koords(',num2str(k),')'];
end
koordsstring=[evalstring,']'];

for t=1:anzahlelemente
       evalstring=[koordsstring,'=ind2sub(size(zaehlmat),find(zaehlmat==',num2str(t),'));'];
       eval(evalstring);
       zaehlmattmp=zaehlmat;
       for u=1:anzahlfaktoren
            coloncell=cell(anzahlfaktoren,1);
           for v=1:length(coloncell)
               coloncell{v}=':';
           end
           coloncell{u}=num2str(koords(u));
           indicestring = coloncell{1};
           for s=2:length(coloncell)
                indicestring = [indicestring,',',coloncell{s}];
           end
           serialize=[];
           serializestring=['serialize=zaehlmattmp(',indicestring,');'];
           eval(serializestring);
           serialize=serialize(:);
           evalstring=['faktorausschlussmat{t}=mengenoder(faktorausschlussmat{t},','serialize);'];
           eval(evalstring);
       end
       faktorfolgemat{t}=mengenminus(linspace(1,anzahlelemente,anzahlelemente),faktorausschlussmat{t});
end


if nargout < 2; faktorfolgemat = [];end
return