function [Cm,Tm,n_good]=one_minute_mean_conv_w(t1,t2,t,c,W,dt,p_lost)
% Вычисление средневзвешенного минутного значения с учетом допустимого
% процента пропусков
%
% Вызов:    [c_mean,t_mean,[n_good]]=one_minute_mean_conv_w(t1,t2,t,c,W,dt,p_lost);
%
% t1,t2  - начальное и конечное значения интервала для вычислений (в сек)
%      t - моменты измерения (в сек)
%      c - измеренные значения
%      W - веса для усреднения
%     dt - интервал между измерениями для заданных весов (в сек)
% p_lost - допустимая доля пропущенных данных (например, 0.50)
%           0 - пропуски не допускаются
%           1 - допустимо любое кол-во пропусков
%
% c_mean - средневзвешенное значение (=Inf или NaN, если пропущено
%          больше 75% данных)
% t_mean - минуты, для которых сделаны вычисления (в сек)
% n_good - количество полученных данных

% 11.06.2008    Хомутов
%       - оптимизирована инициализация NaN-массива C=ones(N0,1)*NaN;
%       - более строго вычищаются недостоверные данные на краях
%         результирующего ряда после conv() - используется ф-ция
%         my_conv_no_err()

T=(t1:dt:t2)';    % равномерный ряд от t1 до t2 в сек.
N0=length(T); NW=length(W)-1;
% генерируем ряд данных с NaN в пропущенных точках
C=ones(N0,1)*NaN;
[K,k]=ismember_digit(T,t,5);
C(K)=c(k);

% вычисляем свертку для каждого момента T и полном объеме данных
% и отбрасываем лишние на концах
Cc=my_conv_no_err(C,W);

% выбираем минутные значения и для
kk=rem(T,60)==0;
Tm=T(kk); Cm=Cc(kk);

K=find(isnan(Cm));      % выбираем непосчитанные с помощью свертки данные
% инициализируем массив "кол-во используемых данных"
n_good=ones(length(Tm),1)*length(W);
n_good(K)=NaN;

% вычислям средние для неполных данных в ширине W
if length(K)>0,
    for l=1:length(K),
        T0=Tm(K(l));
        tt1=T0-45.5; tt2=T0+45.5;
        k=between(t,tt1,tt2,'11');
        [Cm(K(l)),n_good(K(l))]=one_minute_mean_w(Tm(K(l))/60,t(k)/60,c(k),W,dt,p_lost);
    end
end
