%% Имеется исходный массив данных для MATLAB со значениями индексов хабов:
% 1 стобец - дата;
% 2 стобец - час;
% 3 стобец - значение индекса хаба (почасовое);
% 4 столбец - год;
% 5 столбец - месяц года; 
% 6 столбец - номер дня в году;
% 7 столбец - день недели;
% 8 столбец - номен недели в году;

	% Определяем переменную C_YEAR, содержащую среднегодовое значение индекса хаба
    i = 1;
    for Year = MonthTimeSeries(1,4) : ForecastYear
        Index = find(MonthTimeSeries(:,4) == Year);
        if ~isempty(Index)
            C_YEAR(i,1) = Year;
            C_YEAR(i,2) = mean(MonthTimeSeries(Index,3));
            i = i + 1;
        end
    end
	
	% Определяем коэффициент для каждой недели года в массиве C_WEEK: 
	% среднее значение индекса в недели #1...#52 в году, отнесенное к среднему значению индекса за год
    i = 1;
    for Year =  MonthTimeSeries(1,4) : ForecastYear
        for Week = min(MonthTimeSeries(:,8)): max(MonthTimeSeries(:,8))
            Index = find(MonthTimeSeries(:,4) == Year & MonthTimeSeries(:,8) == Week);
            if ~isempty(Index)
                C_YEAR_WEEK(i,1) = Year;
                C_YEAR_WEEK(i,2) = Week;
                IndexMonth = find(C_YEAR(:,1) == Year);
                C_YEAR_WEEK(i,3) = C_YEAR(IndexMonth,2);
                C_YEAR_WEEK(i,4) = mean(MonthTimeSeries(Index,3));
                C_YEAR_WEEK(i,5) = C_YEAR_WEEK(i,4)/C_YEAR_WEEK(i,3);
                i = i + 1;
            end
        end
    end
    i = 1;
    for WeekNum = min(C_MONTH_WEEK(:,2)): max(C_MONTH_WEEK(:,2))
        Index = find(C_MONTH_WEEK(:,2) == WeekNum);
        if ~isempty(Index)
            C_WEEK(i,1) = WeekNum;
            C_WEEK(i,2) = mean(C_MONTH_WEEK(Index,5));
            i = i + 1;
        end
    end

	% Определяем коэффициент для каждого дня недели в массиве C_DAY: 
	% среднее значение индекса в день недели #1...#7 для каждой недели в году, отнесенное к среднему значению индекса для данной недели
    i = 1;
    for Year =  MonthTimeSeries(1,4) : ForecastYear
        for Week = min(MonthTimeSeries(:,8)): max(MonthTimeSeries(:,8))
            for WeekDay = 1 : 7
                Index = find(MonthTimeSeries(:,4) == Year & MonthTimeSeries(:,8) == Week & MonthTimeSeries(:,7) == WeekDay);
                if ~isempty(Index)
                    C_WEEK_DAY(i,1) = Year;
                    C_WEEK_DAY(i,2) = Week;
                    C_WEEK_DAY(i,3) = WeekDay;
                    IndexWeek = find(C_MONTH_WEEK(:,1) == Year & C_MONTH_WEEK(:,2) == Week);
                    if ~isempty(IndexWeek)
                        C_WEEK_DAY(i,4) = C_MONTH_WEEK(IndexWeek,4);
                        C_WEEK_DAY(i,5) = mean(MonthTimeSeries(Index,3));
                        C_WEEK_DAY(i,6) = C_WEEK_DAY(i,5)/C_WEEK_DAY(i,4);
                        i = i + 1;
                    end
                end
            end
        end
    end
    i = 1;
    for Week = min(C_MONTH_WEEK(:,2)): max(C_MONTH_WEEK(:,2))
        for WeekDay = 1 : 7
            Index = find(C_WEEK_DAY(:,3) == WeekDay & C_WEEK_DAY(:,2) == Week);
            if ~isempty(Index)
                C_DAY(i,1) = Week;
                C_DAY(i,2) = WeekDay;
                C_DAY(i,3) = mean(C_WEEK_DAY(Index,6));
                i = i + 1;
            end
        end
    end

%% Таким образом мы получаем относительные коэффицианты K для всех дней недель всех недель года