function calculateDynamicApEn(X,patternLength,similarityCoefficient,similarityCoefficientType,...
                              beginWidthMovingWindow,windowMovingStep,kindOfMovingWindow,aloneWindows,isProfile);
% X                         - вхідні значення
% patternLength             - довжина порівнюваних векторів
% similarityCoefficient     - значення коефіцієнта подібності
% similarityCoefficientType - тип коефіцієнта подібності (1 - розрахунок відсотків,
%                                                         0 - подано абсолютне значення
% beginWidthMovingWindow    - початкова ширина рухомого вікна
% windowMovingStep          - крок руху вікна
% kindOfMovingWindow        - тип руху вікна (1 - вікно зміщується на крок руху,
%                                             0 - вікно збільшується на крок руху)
% aloneWindows              - чи розраховувати середнє відхилення для
%                                      кожного вікна (1 - так, 0 - ні)
% isProfile                 - чи проводити розрахунок ентропії для профіля ряду
%                                      (1 - так, 0 - ні)

[m,n]=size(X);
if (m==1) X=X'; [m,n]=size(X); end
RES=[];

indexStart=1;
windowWidth=beginWidthMovingWindow;
if (aloneWindows==0)
    stdWin=std(X(:,1));
end

while (indexStart+windowWidth-1<=m)
    X1=X(indexStart:indexStart+windowWidth-1,1);
    if (aloneWindows==1) stdWin=std(X1); end
    if (similarityCoefficientType==1)
        criterium=stdWin/100*similarityCoefficient;
    else
        criterium=stdWin * similarityCoefficient;
    end
    if (isProfile==1) X1=getProfile(X1); end
    REStemp=ApEnOpt(X1,patternLength,criterium);
    REStemp=REStemp(patternLength);
    RES=[RES; REStemp];
    if (kindOfMovingWindow==1)
        indexStart=indexStart+windowMovingStep;
    else
        windowWidth=windowWidth+windowMovingStep;
    end
end

clear indexStart windowWidth REStemp m n;
% f=figure('Name','F(alpha) в перемещающемся окне','NumberTitle','off');
% plot3(ZRes,XRes,YRes,'.');
% fAxes=get(f,'CurrentAxes');
% set(get(fAxes,'XLabel'),'String','\alpha','FontAngle','italic','FontName','times new roman','FontSize',14,...
%                         'FontWeight','bold');
% set(get(fAxes,'YLabel'),'String','f(\alpha) from \tau(q)','FontAngle','italic','FontName','times new roman','FontSize',14,...
%                         'FontWeight','bold');
% set(get(fAxes,'ZLabel'),'String','Times','FontAngle','italic','FontName','times new roman','FontSize',14,...
%                         'FontWeight','bold');

% розраховуємо середнє значення
[m,n]=size(RES);
RESmiddle=sum(RES)/m;

f=figure('Name','Значение энтропии и среднее значение в перемещающемся окне','NumberTitle','off');
ft=plot(RES,'k--');
fAxes=get(f,'CurrentAxes');
set(get(fAxes,'XLabel'),'String','Number of window','FontAngle','italic','FontName','times new roman','FontSize',14,...
                        'FontWeight','bold');
set(get(fAxes,'YLabel'),'String','ApEn','FontAngle','italic','FontName','times new roman','FontSize',14,...
                        'FontWeight','bold');
set(ft,'LineWidth',2,'MarkerEdgeColor',[0 0 0],'MarkerFaceColor',[0 0 0]);
hold on
ft=plot([1 m],[RESmiddle RESmiddle],'k:');
set(ft,'LineWidth',2);
legend('Approximate entropy','ApEn middle');
hold off
[file,path]=uiputfile('*.txt','Сохраните ряд энтропии с перемещающимся окном');
fullpath=strcat(path,file);
dlmwrite(fullpath,RES,'\n');

% f=figure('Name','Ширина спектра alpha в перемещающемся окне','NumberTitle','off');
% ft=plot([1; 1],XResLimits(:,1),'k-');
% set(ft,'LineWidth',2);
% hold on
% for i=2:m
%     ft=plot([i; i],XResLimits(:,i),'k-');
%     set(ft,'LineWidth',2);
% end
% ft=plot([1:m],XResLimits(1,:),'k-');
% set(ft,'LineWidth',2);
% ft=plot([1:m],XResLimits(2,:),'k-');
% set(ft,'LineWidth',2);
% hold off
% fAxes=get(f,'CurrentAxes');
% set(get(fAxes,'XLabel'),'String','Number of window','FontAngle','italic','FontName','times new roman','FontSize',14,...
%                         'FontWeight','bold');
% set(get(fAxes,'YLabel'),'String','\alpha','FontAngle','italic','FontName','times new roman','FontSize',14,...
%                         'FontWeight','bold');

%f=figure;
%subplot(2,1,1); surf(ZRes,XRes,YRes);
%XMIN=min(min(ZRes)); YMIN=min(min(XRes)); ZMIN=min(min(YRes));
%XMAX=max(max(ZRes)); YMAX=max(max(XRes)); ZMAX=max(max(YRes));
%axis([XMIN XMAX YMIN YMAX ZMIN ZMAX]) 
%shading interp;
%%set(gca,'XTickLabel',ZRes(:,1));
%%title(textdata(1,sn),'FontSize',16,'FontName','Times New Roman');
%xlabel('Time (windows)','FontSize',14,'FontName','Times New Roman');
%ylabel('\alpha','FontSize',14,'FontName','Times New Roman');
%zlabel('f(\alpha)','FontSize',14,'FontName','Times New Roman');
%subplot(2,1,2); 
%contourf(ZRes,XRes,YRes);colorbar;grid on
%set(gca,'XTickLabel',ZRes(:,1));
%xlabel('Time (windows)','FontSize',14,'FontName','Times New Roman');
%ylabel('\alpha','FontSize',14,'FontName','Times New Roman');
%zlabel('f(\alpha)','FontSize',14,'FontName','Times New Roman');
                    
clear RES;