
function [Mnpf,iperf,Mnpf_toc,nvf] = stimanonparametrica_mod_punto2(yp,Up,p,n,lab,Index,iperff)


pRKHS=40; % length of eigenfunctions

%%%%%    p=30;%input('# of predictor i.r. samples = ');%lunghezza risposte impulsive predittore (100)

p2=300;%numero dati da togliere per andare a regime

%%%%%    n=470;%input('# of measurements = ');%numero dati effettivi per la stima (50,300)

mordn=30;%input('model order = ');if isempty(mord);mord=10;end%ordine ARMAX (10,20)
off=1;%minimo ordine di modello
%inp=input('1-WN 2-LP: ');if isempty(inp);inp=1;end
lowpar=0.8;%parametro per l'ingresso 2
al=200;%allunga con zeri le i.r.
nn=n+p+p2;
nt=500;%dimensione test set
frac=1/3;% fraction of data used for validation/selection
ntval=floor(frac*(n+p));%dimensione validation set
red=n;
SV=5;%20
m=23;%15numero ingressi incogniti                            
mPEM=min(15,ceil((9/10)*(n+p)/(m+2)));%20;%max ordine PEM
Multi=[1:20];
nM=size(Multi,2);
ou=1;
oee=1;
BL=[];%i blocchi per la marginale, se [] disattivato

maxp_GLARS = 30; % maximum order for GLARS;



    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%% STIMA NONPARAMETRICA %%%%%%%%%%%(e) una var poi estesa ad m, (f) m var con starting point da c %%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%(b) e (c) come (e) (f) ma senza poli%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %  lab='yy';%'yy' se c'e' parte autoregressiva e ingresso
    mv=1;%mv = 1 se si stima una sola varianza, se no si stimano m varianze
    mb=1;%mb = 1 se si stima un solo cambiamento di scala, se no si stimano m cambiamenti di scala
    
%     mv=1;LP=0;LP2=0;%una sola varianza ora
%     cn=0;ipn=[];
%     [eta,Mnpa,Da,Sa,objvala,A,ipera,MP,nv]=SSpline(y,U,p,lab,mv,mb,ipn,[],LP,LP2,cn,red,BL);
%     [errnp0a,errnp1a,Errnpa(jj),RnpMa(jj,:),Rnp2Ma(jj,:),Da,Sa]=CompErr(Mnpa,gtrue,htrue,Ind(jj,:),errnp0a,errnp1a,ytest_tot,ytest,Utest,p2,nt,VarTest,Multi);
%     %ipera
%     objvala
%     
%     mv=1;LP=0;LP2=1;%una sola varianza ora, LP=1 sarebbe assurdo in questo caso, con LP2=1 restituite alla fine m varianze
%     cn=0;ipn=[];
%     [eta,Mnpb,Db,Sb,objvalb,A,iperb,MP,nv]=SSpline(y,U,p,lab,mv,mb,ipn,[],LP,LP2,cn,red,BL);
%     [errnp0b,errnp1b,Errnpb(jj),RnpMb(jj,:),Rnp2Mb(jj,:),Db,Sb]=CompErr(Mnpb,gtrue,htrue,Ind(jj,:),errnp0b,errnp1b,ytest_tot,ytest,Utest,p2,nt,VarTest,Multi);
%     %ipera
%     objvalb
%         
%     mv=0;LP=1;LP2=0;%piu' varianze con pto iniziale quello di prima
%     cn=0;ipn=[];for i=1:size(iperb,2);if iperb(i)==-inf;iperb(i)=-40;end;end
%     [eta,Mnpc,Dc,Sc,objvalc,A,iperc,MP,nv]=SSpline(y,U,p,lab,mv,mb,ipn,[],LP,LP2,cn,red,BL,iperb);
%     [errnp0c,errnp1c,Errnpc(jj),RnpMc(jj,:),Rnp2Mc(jj,:),Dc,Sc]=CompErr(Mnpc,gtrue,htrue,Ind(jj,:),errnp0c,errnp1c,ytest_tot,ytest,Utest,p2,nt,VarTest,Multi);
%     %iperb
%     objvalc
%     
%     mv=1;LP=0;LP2=0;%una sola varianza ora e 2 poli
%     cn=2;ipn=-0.5*ones(1,cn);
%     [eta,Mnpd,Dd,Sd,objvald,A,iperd,MP,nv]=SSpline(y,U,p,lab,mv,mb,ipn,[],LP,LP2,cn,red,BL);
%     [errnp0d,errnp1d,Errnpd(jj),RnpMd(jj,:),Rnp2Md(jj,:),Dd,Sd]=CompErr(Mnpd,gtrue,htrue,Ind(jj,:),errnp0d,errnp1d,ytest_tot,ytest,Utest,p2,nt,VarTest,Multi);
%     %iperc
%     objvald


    
    
    
    
    
% %     Index=zeros(1,m+1);
% % % % %      lab='yy';%'yy' se c'e' parte autoregressiva e ingresso
%      mb=1;%mb = 1 se si stima un solo cambiamento di scala, se no si stimano m 
%      %cambiamenti di scala
% 
%      mv=1;LP=0;LP2=1;%una sola varianza ora, LP=1 sarebbe assurdo in  questo 
%      %caso, con LP2=1 restituite alla fine m varianze
%      cn=2;ipn=-0.5*ones(1,cn);
%      tic
%      [Mnpe,ipere,nve]=SSpline2(yp,Up,p,lab,mv,mb,cn,red,LP,LP2,Index);
%      Mnpe_toc = toc;

ipere = iperff;
  % % da commentare nel caso si vuole fare solo Mnpe
     mv=0;LP=1;LP2=0;%piu' varianze con pto iniziale quello di prima
     cn=2;ipn=-0.5*ones(1,cn);
     for i=1:size(ipere,2);
         if ipere(i)==-inf;ipere(i)=-40;end;end
     tic
     [Mnpf,iperf,Ak,nvf]=SSpline2(yp,Up,p,lab,mv,mb,cn,red,LP,LP2,Index,ipere);
     Mnpf_toc = toc;

% da scommentare nel caso si vuole fare solo Mnpe
% % Mnpf_toc = NaN;
% % Mnpf=NaN;
% % iperf=NaN;





    
    
    
    
    
    
    
    
    
    
    
    
    
  
