function [xm,ym,zm,fm,n_accept]=mean_with_gaps_xyzf(x,y,z,f)
% Вычисление средних значений при потерях
% NaN, если потерь больше 10%
% NaN, если кол-во измерений < требуемого при данной вариации полЯ
%       [xm,ym,zm,fm,n_accept]=mean_with_gaps_xyzf(x,y,z,f);
%

% 2005 (?)   - S.Y.Khomutov
% 24.08.2016 - адаптировано под оценку ско только по данным вариометра
% 18.05.2021 - каждая составляющая обрабатывается раздельно

SDF_accept = 0.5;       % допустимаЯ погрешность среднего

% - X
N=length(x);            % кол-во измерений
SDF_max=nanstd(x);    % статистика только по X
n_accept(1)=(SDF_max/SDF_accept)^2;    % требуемое кол-во измерений
if sum(isnan(x))==0,
    xm=nanmean(x);
elseif sum(isnan(x))/N>0.1 | sum(~isnan(x))<n_accept(1),     % NaN, если потерь больше 10%
    xm=NaN;
else
    xm=nanmean(x);
end

% - Y
N=length(y);            % кол-во измерений
SDF_max=nanstd(y);    % статистика только по X
n_accept(2)=(SDF_max/SDF_accept)^2;    % требуемое кол-во измерений
if sum(isnan(y))==0,
    ym=nanmean(y);
elseif sum(isnan(y))/N>0.1 | sum(~isnan(y))<n_accept(2),     % NaN, если потерь больше 10%
    ym=NaN;
else
    ym=nanmean(y);
end

% - Z
N=length(z);            % кол-во измерений
SDF_max=nanstd(z);    % статистика только по X
n_accept(3)=(SDF_max/SDF_accept)^2;    % требуемое кол-во измерений
if sum(isnan(z))==0,
    zm=nanmean(z);
elseif sum(isnan(z))/N>0.1 | sum(~isnan(z))<n_accept(3),     % NaN, если потерь больше 10%
    zm=NaN;
else
    zm=nanmean(z);
end

% - Fscal
N=length(f);            % кол-во измерений
SDF_max=nanstd(f);    % статистика только по X
n_accept(4)=(SDF_max/SDF_accept)^2;    % требуемое кол-во измерений
if sum(isnan(f))==0,
    fm=nanmean(f);
elseif sum(isnan(f))/N>0.1 | sum(~isnan(f))<n_accept(4),     % NaN, если потерь больше 10%
    fm=NaN;
else
    fm=nanmean(f);
end
