function nets=crossval(method,n,in,out,options,afun,ofun)

% nets=crossval(method,n,in,out,options,afun,ofun)
% führt eine n-fache Kreuzvalidierung mit dem Modell METHOD ('mlp' oder 'linear')
% durch. Das Ergebnis ist ein Array von trainierten Modellen
% Die Hidden-Unit-Anzahl für ein MLP ist in OPTIONS(19)
% AFUN ist die Output-Aktivierungsfunktion ('linear', 'logistic', 'softmax') 
% (Default 'linear')
% OFUN ist die Optimierungsmethode (siehe NETOPT)
% (Default 'scg')

nin=size(in,2);
nout=size(out,2);
nsamp=size(in,1);
nval=floor(nsamp/n);
ntrain=nsamp-nval;
if nargin<7
   ofun='scg';
end
if nargin<6
   afun='linear';
end

for i=1:n
   if method=='mlp'
      net=mlp(nin,options(19),nout,afun);
   else
      net=glm(nin,nout,afun);
   end
   tin=in(1:ntrain,:);
   tout=out(1:ntrain,:);
   
   net=netopt(net,options,tin,tout,ofun);
   
   net.tin=tin;
   net.tout=tout;
   net.vin=in(ntrain+1:nsamp,:);
   net.vout=out(ntrain+1:nsamp,:);
   nets(i)=net;
   
	in=[net.vin
   	 net.tin];
   out=[net.vout
      net.tout];
end