function [c_mean,n_good]=one_minute_mean_w(t_min0,t,c,W,dt,p_lost)
% Вычисление средневзвешенного минутного значения с заданным
% уровнем допустимых потерь
%
% Вызов:    [c_mean,[n_good]]=one_minute_mean_lost(t_min0,t,c,W,dt,p_lost)
%
% t_min0 - минута, для которой ведутся вычисления
%      t - моменты измерения (в минутах)
%      c - измеренные значения
%      W - веса для усреднения (для 1-сек данных)
%     dt - интервал между измерениями для заданных весов (в сек)
% p_lost - допустимая доля пропущенных данных (например, 0.50)
%           0 - пропуски не допускаются
%           1 - допустимо любое кол-во пропусков
%
% c_mean - средневзвешенное значение
% n_good - количество обработанных данных

% 11.06.2008    С.Ю.Хомутов
%    оптимизировано вычисление средневзвешенной суммы при неполных данных
% 06.12.2023 - округление до целых сек моментов измерений при сопоставлении
%               с фи - ?
% 29.04.2024 - при интервале между измерений до 0.1 с - некорректно
%               выбирались моменты времени (только целые). Сделан отбор 
%               по сравнению моментов времени в сек, умноженных на 10 
%               и округлённых до целого

t=t(~isnan(c)); c=c(~isnan(c));

if isempty(t),      % нет нормальных данных
    c_mean=NaN; n_good=0;
    return
end

Npm=(length(W)-1)/2;    % кол-во точек до центрального момента
ts0=(t_min0*60-Npm*dt:dt:t_min0*60+Npm*dt)'; % равномерная шкала времени в сек

%   версия (домашняя) до 29.04.2024
% [kc,kw]=ismember_digit(round(t*60),ts0,8);   % выбираем данные для общих моментов

%   версия c 29.04.2024 - сек*10 и округление до целого
[kc,kw]=ismember_digit(round(t*60*10),round(ts0*10),8);

if sum(kc)~=sum(kw),                % что-то со временем (дублир. моменты?)
    [hh,mm,ss,str]=deg_dms(t_min0/60);disp(str)
    error('!!! Проблемы со временем !!!')
end
if (length(W)-sum(kw)) > fix(length(W)*p_lost)    % кол-во потерянных > допустимого
    c_mean=NaN; n_good=length(c);
else
    c_mean=sum(c(kc).*W(kw))/sum(W(kw));
    n_good=sum(kw);
end
