function [c_m,c_s,c_n]=one_hour_mean(T0,T,c,Nmin)
% Вычисление среднего арифметического за 1 час по 1-минутным данным
%
% [c_m,c_s,c_n]=one_hour_mean(T0,T,c[,Nmin])
%
%   T0 - сериальная дата моментов, длЯ которых будет считатьсЯ среднее
%        (T0(k)-0.5/24 ... T0(k)+0.5/24)
%    T - сериальная дата моментов, длЯ которых имеютсЯ измерениЯ (1-минутные)
%    c - измеренные значениЯ
% Nmin - минимальное кол-во точек, по которым вычисляется среднее (по
%       умолчанию - 60, т.е. полный ряд)
%
%   c_m - среднее за час (==NaN, если количество измерений <60)
%   c_s - стандартное отклонение
%   c_n - количество измерений длЯ данного часа (<60 длЯ NaN)

% 16.02.2005 - замена Inf-условий на NaN
% 26.01.2015 - вместо MJD используется сериальная дата
% 18.01.2015 - изменен вывод счетчика на экран
% 07.07.2016 - можно устанавливать минимальное кол-во данных для вычисления

if nargin<4, % не задано минимальное кол-во точек
    Nmin=60;
end
    
n=length(T0); % кол-во часовых значений
k=~(isnan(c)|isinf(c)); 
T=T(k); c=c(k);   % исключаем пропуски в данных (=NaN or Inf)

disp('... Вычисление среднечасовых значений ...')

c_m=zeros(n,1); c_s=zeros(n,1); c_n=zeros(n,1);
for k=1:n,
%     if mod(k,100)==0, 
%         fprintf('%7d',k), if mod(k,1000)==0, fprintf('\n'), end, 
%     end
    kk=between(T,T0(k)-0.5/24,T0(k)+0.5/24,'11');
    c_n(k)=sum(kk);     % кол-во измерений, принЯтых в расчет
    if sum(kk)>=Nmin-1,     % берем в обработку только полный час
        c_m(k)=mean(c(kk)); % среднее за час
        c_s(k)=std(c(kk)); % STD
    else
        c_m(k)=NaN; % среднее за час
        c_s(k)=NaN; % STD
    end        
end
% fprintf('\n');
