function [F2,Ns]=MFFAOneStep(Y,S)
% Мультифрактальний FA (MF-DFA) за статтею
% "Multifractal detrended fluctuation analysis of nonstationary time series"
% стр. 3.
% ДОПОМІЖНА ФУНКЦІЯ
% Обчислює значення F^2_FA(s,nu) (кроки 2 та 3 статті)
% Аргументи:
%   Y     - вектор профілю
%   S     - ширина вікна
% Результати:
%   F2    - вектор значень функції F^2(s,nu)
%   Ns    - кількість вікон вказаної ширини
% Обмеження:
%   1) вектор Y повинен мати 1 рядок

% визначаємо кількість елементів вектора профілю
[m,n]=size(Y);
% визначаємо кількість вікон, що поміщаються на векторі не перекриваючись
Ns=floor(n/S);
% виділяємо пам"ять для вектора F, що міститиме значень 2*Ns
F2=zeros(1,Ns*2);

% КРОК 2-3
% нормалізуємо значення послідовності
%SD=middleSqDev(Y(1,:));
SD=sqrt(sum(Y.*Y)/n-sum(Y)/n);
if (SD~=0) Y=Y/SD; end

% проходимо по вікнам зліва-направо. Формула (2)
windowBegin=1; windowEnd=S; index=1;
while (windowEnd<=n)
    % у поточному вікні знаходимо суму елементів
    SUM=sum(Y(1,windowBegin:windowEnd));
    % підносимо до квадрату і записуємо у функцію
    F2(1,index)=SUM*SUM;
    % переходимо до наступного вікна та до наступного елементу масиву F
    windowBegin=windowBegin+S; windowEnd=windowEnd+S; index=index+1;
end

% проходимо по вікнам справа-наліво
windowBegin=n-S+1; windowEnd=n;
while (windowBegin>=1)
    % у поточному вікні знаходимо суму елементів
    SUM=sum(Y(1,windowBegin:windowEnd));
    % підносимо до квадрату і записуємо у функцію
    F2(1,index)=SUM*SUM;
    % переходимо до наступного вікна та до наступного елементу масиву F
    windowBegin=windowBegin-S; windowEnd=windowEnd-S; index=index+1;
end
% у векторі F2 знаходяться значення F^2(s,nu) для вікон ширини S
% збільшуємо вдвічі кількість вікон, оскільки двічі використовувався цикл
Ns=Ns*2;

% очищуємо локальні змінні
clear m n windowBegin windowEnd index SUM TEMP;