function V=Otsev_V(V)

% Есть вектор значений V. Считается, что значения элементов подчинены
% нормальному закону распределения. Необходимо исключить из вектора данные
% с резко отличающимися значениями.

% Описание методики см. termist.com => Глоссарий => Отсев ошибок

% Проверяем входные данные
if ~any(size(V) == 1)
    error('Входные данные должны быть вектором')
end

% Удаляем из исходного ряда нечисловые данные
V(isnan(V))=[];
V(isinf(V))=[];

Flag=1; % Цикл будет выполнен хотя бы один раз
while Flag
    Flag=0;
    % Количество испытаний
    n=length(V);
    % Проверяем входные данные на предмет размера
    if n < 3
        error('Мало данных')
    end
    % Определяем оценки среднего значения X_Sr
    % и среднеквадратичного отклонения S
    X_Sr=mean(V);
    S=std(V);
    % В исследуемом ряде выбираем минимальное и максимальное значения
    [min_X, Num_min_X]=min(V);
    [max_X, Num_max_X]=max(V);
    % Для найденных экстремальных значений определяем тау - статистики
    tau_1=(X_Sr-min_X)./S;
    tau_n=(max_X-X_Sr)./S;
    % Определяем критическое значение тау - статистики
    if n < 40
        tau_krit=2.4+n./57-4./n;
    else
        tau_krit=3;
    end
    % Проверяем вектор на наличие резко отличающихся значений
    if (tau_1 > tau_krit) | (tau_n > tau_krit)
        % Есть такие
        Flag=1; % Будем пересчитывать еще, как минимум, один раз
        % Удаляем экстремальный элемент
        if tau_1 >= tau_n
            V(Num_min_X)=[];
        else
            V(Num_max_X)=[];
        end
    end
end