function yprogn=vosstanovl_logabs(varargin);
% Восстанавливает ряд по остаткам от синусоидального или єкспоненциального
% тренда.
prodolzh=0;
if length(varargin)==0 % никаких параметров
    [file,path]=uigetfile('*.mat','Откройте коэффициенты модели');
    inmatfile=strcat(path,file);

    [file,path]=uigetfile('*.txt','Откройте ряд остатков для прогноза');
    intxtfile=strcat(path,file);
    outtxtfile='';
else
    if length(varargin)==3 % 3 параметра: мат, тхт и куда записать результат
        inmatfile=varargin{1};
        intxtfile=varargin{2};
        outtxtfile=varargin{3};
    else
        if length(varargin)==2 % 2 параметра: тхт входной и тхт выходной.
            intxtfile=varargin{1};
            outtxtfile=varargin{2};
            inmatfile=strrep(intxtfile,'.txt','.mat');
        else % Один параметр - имя входного файла - продолжение на 5000 точек.
            inmatfile=varargin{1};
            outtxtfile=strrep(inmatfile,'.mat','_sintrend_prodolzh.txt');
            %inmatfile=strrep(intxtfile,'.txt','.mat');
            prodolzh=1;
        end
    end
end
load(inmatfile);
global npredict;
if (isempty(npredict))
    npredict=1000;
end
if (prodolzh)  
    %n=3000;
    remains=zeros(n+npredict,1);
else
    remains=dlmread(intxtfile); % Прогноз остатков
end
n=length(remains);
x=transpose(1:n);
aprox_type=1;
nnn=length(masparams);
product=zeros(n,1);

for i=1:nnn
    params=masparams(i);
    a=params.a;
    b=params.b;
    c=params.c;
    d=params.d;
    e=params.e;
    %f=params.f;
    type=params.type;
    if (type==0)
        %y1_progn=(ones(n,1)*a+b*x)+log(ones(n,1)+c*sin(d*x+ones(n,1)*e));
        y1_progn=(ones(n,1)*a+b*x)+c*sin(d*x+ones(n,1)*e);
    else
        y1_progn=(ones(n,1)*a.*exp(b*x))+(ones(n,1)+c*sin(d*x+ones(n,1)*e));
        %y1_progn=((ones(n,1)*a+x*b).*exp(c*x)).*(ones(n,1)+d*sin(e*x+ones(n,1)*f));
    end
    product=product+y1_progn;
    xprogn=remains+product;
    figure;
    plot(xprogn);
    title (strcat(num2str(i),'iteraciya'));
end
xprogn=exp(xprogn);
figure;
plot(xprogn);
title ('Exponentizl vosstanovl');


if length(outtxtfile)==0
    [file,path]=uiputfile('*.txt','Сохраните восстановленный ряд...');
    outtxtfile=strcat(path,file);
end
dlmwrite(outtxtfile,xprogn,'\n'); % Прогноз остатков
