function calculateDynamicMFDFA(X,windowWidthBegin,windowWidthEnd,POWERS,ORDER,kindOfElevate,valueOfElevate,kindOfMovingWindow,beginWidthMovingWindow,windowMovingStep,percFunction);

indexStart=1;
windowWidth=beginWidthMovingWindow;
if (kindOfMovingWindow==1) && (windowWidthEnd>windowWidth/2) windowWidthEnd=floor(windowWidth/2); end
[m,n]=size(X);
if (n==1) X=X'; [m,n]=size(X); end
index=1;
XRes=zeros(0,0);
YRes=zeros(0,0);
ZRes=zeros(0,0);
    
while (indexStart+windowWidth<n)
    X1=X(1,indexStart:indexStart+windowWidth-1);
    [S,FqS,Q]=MFDFA(X1,windowWidthBegin,windowWidthEnd,POWERS,ORDER,kindOfElevate,valueOfElevate);
    [Hq,TAUq,Q2]=MFDFAHTau(S,FqS,Q);
    % alpha f(alpha)
    [XResTemp,YResTemp]=MFDFAAlphaFTAUSpline(Q2,TAUq,percFunction);
    [mTemp,nTemp]=size(XResTemp);
    if (index~=1)
        if (nTemp>nXRes)
            TNaN=zeros(mXRes,nTemp-nXRes);
            TNaN(:,:)=NaN;
            XRes=[XRes TNaN];
            YRes=[YRes TNaN];
        elseif (nTemp<nXRes)
            TNaN=zeros(1,nXRes-nTemp);
            TNaN(:,:)=NaN;
            XResTemp=[XResTemp TNaN];
            YResTemp=[YResTemp TNaN];
        end
    end
    XRes(index,:)=XResTemp;
    YRes(index,:)=YResTemp;
    [mXRes,nXRes]=size(XRes);
    ZRes(index,1:nXRes)=index;
    if (kindOfMovingWindow==0)
        indexStart=indexStart+windowMovingStep;
    else
        windowWidth=windowWidth+windowMovingStep;
    end
    index=index+1;
end

% 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');

% розраховуємо ширину по ALPHA для кожного елемента та середнє значення
[m,n]=size(XRes);
XResMiddle=zeros(1,m);
XResLimits=zeros(1,m);
XResWidth=zeros(1,m);
for i=1:m
    XResLimits(1,i)=max(XRes(i,:));
    XResLimits(2,i)=min(XRes(i,:));
    XResWidth(1,i)=XResLimits(1,i)-XResLimits(2,i);
    XResMiddle(1,i)=(XResLimits(1,i)+XResLimits(2,i))/2;
end
XResMiddle4All=sum(XResMiddle)/m;

f=figure('Name','Среднее значение и ширина f(alpha) в перемещающемся окне','NumberTitle','off');
ft=plot(XResMiddle,'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','\alpha','FontAngle','italic','FontName','times new roman','FontSize',14,...
                        'FontWeight','bold');
% set(gca,'YLim',[0 1]);
set(ft,'LineWidth',2,'MarkerEdgeColor',[0 0 0],'MarkerFaceColor',[0 0 0]);
hold on
ft=plot([1 m],[XResMiddle4All XResMiddle4All],'k:');
set(ft,'LineWidth',2);
ft=plot(XResWidth,'k-');
set(ft,'LineWidth',2);
legend('Spectrum windowed middle','Spectrum middle','Spectrum windowed width');
hold off

% 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');

[file,path]=uiputfile('*.txt','Укажите путь куда сохранить среднee спектра мультифрактальности');
fullfilename=[path,file];
dlmwrite(fullfilename,XResMiddle,'\n');

[file,path]=uiputfile('*.txt','Укажите путь куда сохранить ширину спектра мультифрактальности');
fullfilename=[path,file];
dlmwrite(fullfilename,XResWidth,'\n');

clear i m n f fAxes indexStart windowWidth index;