function skleenoe=test_skleyka(y,masdtparam);% s,type_hier);
% функция тестирования иерархии дискретизациий и выбора квантилей. Для каждой иерархии проводится
% определение состояний, разложение ряда на состояния и обратная операция
% восстановления и сшивания. Позволяет оценить правильность представления
% ряда в виде состояний.
global logs_skleyka;
global hlogfile;
if (isempty(hlogfile))
    hlogfile=1;
end
N=length(y);
% Определяем наиболее оптимальную длину ряда при заданной иерархии.
if (isempty(masdtparam))
    if (type_hier==1)
        [N1,masm,masdt]=getbestlength(N,[2,3,5,7,11,13,17,19,23,29]);
        %Возможно использование простой иерархии - степени двоек.
    else
        [N1,masdt]=getstepen2(N);
    end
    % Обрезаем входной ряд, убирая лишние начальные точки.
    y_urez=y(N-N1-1:N);
    % блок прогнозирования для каждого варианта приращения.
    %Будем начинать восстановление с половины, потому что не все дх будут иметь
    %состояние. Для большого дх первое состояние наступит только в момент
    %времяени дх.
    if (size(y,1)>size(y,2))
        y=transpose(y);
    end

else
    N1=N-1;
    y_urez=y;
end
nbeg=1;
tbeg=nbeg;
xx=1:length(y);

skleenoe=[];
dt_prev=1;
lastdsigma=1;
s=3;%dobawleno, na wsyakiy shtob ne wyletelo.
s1=s;

xx=0:N1;
lin_aprox=polyfit(xx,y,1);

aa=ones(1,length(xx))*lin_aprox(1);
bb=ones(1,length(xx))*y_urez(nbeg);
global type_prirash;
if isempty(type_prirash)
    type_prirash=0;
end
global type_s;
global s_const;
firstflag=1;
for dtparam=masdtparam(1:length(masdtparam)-1)
    dt=dtparam.dt;
    if (dtparam.use==0)
        continue;
    end

    if type_prirash==0
        dy=y_urez(dt+1:N1+1)-y_urez(1:N1-dt+1);% абсолютные приращения.
    else
        dy=(y_urez(dt+1:N1+1)-y_urez(1:N1-dt+1))./y_urez(dt+1:N1+1);% Относительные приращения
    end
    if (firstflag==1)
        statdt1=getstdotklon(dy);
        firstflag=0;
    end
    statdt=getstdotklon(dy);
    otnoshenie_sigma=statdt/statdt1;
    lastdsigma=statdt;
    if type_s==1
        s=s_const;
    else
        if type_s==2
            s=round(s_const*otnoshenie_sigma);
            if s<2 
                s=2;
            end
            global porog_smax;
            if s> porog_smax;
                s=porog_smax;;
            end
        else
            s=dtparam.s;
        end
    end

    new_s=round(s1*otnoshenie_sigma);
    % Предположение, что изменение стандартного отклонения
    % (среднеквадратического) в ряде при изменении дт должно сопровождаться
    % изменением кол-ва уровней квантования.
    if ((new_s>1)&&(new_s<(N1-dt)))
        %s=new_s;
    end
    %Преобразовую ряд в состояния с выбранной дискретизацией.
    [ysost,sredn_sost,stdotklon_group,stdotklon_all,matrix_kol,num_group]=dy2sost(dy,s,1,dt,dtparam.tbeg_sost,dtparam.tend_sost);
    if (logs_skleyka==1);
        fprintf(hlogfile,'dt=\t%d\tstdotklon=%d\t\t',dt,statdt);
        fprintf(hlogfile,'Raspred po sost:(');
        fprintf(hlogfile,'%d',num_group(1));
        for i=2:s
            fprintf(hlogfile,',%d',num_group(i));
        end
        fprintf(hlogfile,')');
        fprintf(hlogfile,', standard deviation=%d, Otklonenie w gruppah: =\t%d\t',std(num_group),stdotklon_all);
        %for ggg=1:s
        %    fprintf(hlogfile,'sx%d=%d\t',ggg,stdotklon_group(ggg));
        %end
        %fprintf(hlogfile,'\n');
        fprintf(hlogfile,'sx/sx(proshl)=%d,real s= %d,recomend s=%d\n',otnoshenie_sigma,s,new_s);
    end
        % Обрезаю ряд состояний, чтобы ряд начинался с состояния,
    % соответствующего моменту времени nbeg. Cразу же и прореживаем с
    % частотой дт
    raspr=raspred_veroyatn(dy,100);
    %figure;
    %plot(raspr(1,:),raspr(2,:));
    %title(strcat('Raspredelenie weroyatnosti dt=',num2str(dt)));
    lysost=length(ysost);
    ysost=ysost(1:dt:lysost);
    %преобразуем ряд состояний назад в значения
    mas_newy=sost2val(y_urez(nbeg),ysost,sredn_sost,dt);
    %рисуем для теста
    % проводим сшивание.
    if (isempty(skleenoe))
        skleenoe=mas_newy;
    else
        % lenmasnewy=length(mas_newy)
        % lenskley=length(skleenoe)
        dt_prev=dt;
        %dt_prev=lcm(dt_prev,dt);%НОК предыдущих дх
        %skleenoe=skleyka(mas_newy,skleenoe,dt_prev);
        skleenoe=skleyka(skleenoe,mas_newy,dt_prev);
    end
    % строим результат склеивания.
        global graphs;
    if ~isempty(graphs)
        figure;
        %plot(y_urez(nbeg:N1));
        hold on;
        %y_prognall=[y_urez(nbeg:N1),mas_newy];
        title(strcat('dt=',num2str(dt)));
        plot(mas_newy,'g');
        title(strcat('dt=',num2str(dt)));
        hold on;
        plot(y_urez,'b');
        plot(skleenoe,'r');
    end

end
trend=aa.*xx+bb;
dt_prev=dt;
%skleenoe=skleyka(skleenoe,trend,dt_prev);
%skleenoe=skleyka(skleenoe,y_urez(nbeg:N1+1),dt_prev); %zaremano po prosbe
%SVN 20081120
global graphs;
if 1%~isempty(graphs)
    figure;
    plot(trend,'g');
    hold on;
    plot(y_urez(nbeg:N1));
    plot(skleenoe,'r');
end
if (length(skleenoe)<N1)
    N1=length(skleenoe);
end
razn=sum(abs(skleenoe(1:N1)-y_urez(1:N1)))/N1;
if (logs_skleyka==1)
    fprintf(hlogfile,'srednkw otklon rezultata(wse) =%d \n',razn);
end
%razn=sum(abs(skleenoe(N1-100:N1)-y_urez(N1-100:N1)))/100;
%fprintf(1,'srednkw otklon rezultata (posl 100)=%d \n',razn);
