function generate_hier(handles);
%Генерируется иерархия по умолчанию.

global hierarchy_params;
global in_series;
y=in_series;
hierarchy_params=[];
if isstruct(handles)% Если используется граф интерфейс, то вход - структура. Иначе - массив.
    nbeg=str2num(get(handles.edit3,'String'));
    nend=str2num(get(handles.edit4,'String'));
    s=str2num(get(handles.edit7,'String'));
    k=str2num(get(handles.edit9,'String'));
    rmin=str2num(get(handles.edit15,'String'));
    rmax=str2num(get(handles.edit16,'String'));
    nprognoz=str2num(get(handles.edit17,'String'));
    % Определяем наиболее оптимальную длину ряда при заданной иерархии.
    type_hier=get(handles.radiobutton9,'Value');
    tend=str2num(get(handles.edit4,'String'));
    tbeg=str2num(get(handles.edit3,'String'));
else
     nbeg,nend, s, k,
    rmin=str2num(get(handles.edit15,'String'));
    rmax=str2num(get(handles.edit16,'String'));
    nprognoz=str2num(get(handles.edit17,'String'));
    % Определяем наиболее оптимальную длину ряда при заданной иерархии.
    type_hier=get(handles.radiobutton9,'Value');
    tend=str2num(get(handles.edit4,'String'));
    tbeg=str2num(get(handles.edit3,'String'));
end
N=nprognoz;

if (type_hier==0)
    [N1,masm,masdt]=getbestlength(N,[2,3,5,7,11,13,17,19,23,29,31,33,37,41]);
    %Возможно использование простой иерархии - степени двоек.
else
    [N1,masdt]=getstepen2(N);
end
% Обрезаем входной ряд, убирая лишние начальные точки.
%nbeg=nend-N1;
nprognoz=N1;
y_urez=y(nbeg:nend); 
%set(handles.edit3,'String',num2str(nbeg-1)); % 20081229: Убираю изменение участка
if isstruct(handles)% Если используется граф интерфейс, то вход - структура. Иначе - массив.
    set(handles.edit17,'String',num2str(nprognoz));
end
%обучения 
%if size(y_urez,1)>size(y_urez,2)
%    y_urez=transpose(y_urez);
%end
% блок прогнозирования для каждого варианта приращения.
rewmasdt=-sort(-masdt);
%rewmasdt=rewmasdt%(3:length(rewmasdt));
masdtparam=[];
% 252-3,210-8, 180-10,140-2,126-13, 105-15,90-2,84-13,70-5,63-2, 60-11,45-11 - сп500
%sin30 :168-14,140-10,120-2,105-8,84-6,70-9,60-5,56-9,42-3,40-3,35-4,30-4, 28-9,24-15,21-4,20-3,15-7,14-15,12-7,10-2,8-10,7-9,6-8,5-6,4-4,3-9,2-5
masiv_s=[2,2,2,2,14,10,2,8,6,9,5,9,3,3,4,4,9,5,4,3,7,15,7,2,10,9,8,6,4,9,5];
masiv_k=[2,2,2];
%dtmanual=length(masiv_s);
dtmanual=length(rewmasdt);
N=tend-tbeg;
str=cell(dtmanual-2,1);
global limitdt;
for numdt=1:dtmanual
    dtparam=[];
    dtparam.rmin=rmin; %Нужно выражение как-то. Зависимость от дт.
    dtparam.rminmin=1;
    dtparam.rminmax=3;    
    dtparam.rmax=rmax;
    dtparam.rmaxmin=3; 
    dtparam.rmaxmax=5;
    dtparam.dt=rewmasdt(numdt);
    dtparam.testr=0;
    dtparam.s=s;%+round(sqrt(numdt));%masiv_s(numdt);
    dtparam.smin=3;
    dtparam.smax=s+3;
    dtparam.tests=0;
    dtparam.k=k;
    dtparam.kmin=1;
    dtparam.kmax=k+1;
    dtparam.testk=0;
    dtparam.testrmin=0;
    dtparam.testrmax=0;
    dtparam.tbeg=1;
    dtparam.tend=N;
    dtparam.tbeg_sost=1;
    dtparam.tend_sost=N;
    if rewmasdt(numdt)<limitdt
        dtparam.use=1;
    else
        dtparam.use=0;
    end
    str(dtmanual-numdt+1)={num2str(rewmasdt(numdt))};
    masdtparam=[dtparam,masdtparam];
end
if isstruct(handles)% Если используется граф интерфейс, то вход - структура. Иначе - массив.
    set(handles.popupmenu1,'String',str);
end
hierarchy_params=masdtparam;
global in_series_urez;
in_series_urez=y_urez;
